码迷,mamicode.com
首页 > 其他好文 > 详细

一道理解虚函数(多态)机制的题目

时间:2019-06-09 15:43:16      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:类型   span   题目   prot   get   ase   cte   ted   sdn   

一道理解虚函数(多态)机制的题目(摘抄)

以下程序输出为

class Base {
    public:
    Base(int j): i(j)  {}
    virtual~Base() {}
    void func1() {
        i *= 10;
        func2();
    }
    int getValue() {
        return  i;
    }
    protected:
    virtual void func2() {
        i++;
    }
    protected:
    int i;
};
class Child: public Base {
    public:
    Child(int j): Base(j) {}
    void func1() {
        i *= 100;
        func2();
    }
    protected:
    void func2() {
        i += 2;
    }
};
int main() {
    Base * pb = new Child(1);
    pb->func1();
    cout << pb->getValue() << endl; delete pb; }

答案:12

//
Base * pb = new Child(1), 首先创建子类对象,初始化为1,但是pb是BASE类型;
func1()不是虚函数,所以pb->func1()执行的是基类的func1函数,i= 10,然后调用func2()函数;
这里的func2是虚函数要往下派生类寻找,找到后执行派生类中的func2(),此时,i = 12;
最后执行pb->getValue(),结果为12
---------------------
作者:小人物_cipher
来源:CSDN
原文:https://blog.csdn.net/u012605629/article/details/43709613

 

一道理解虚函数(多态)机制的题目

标签:类型   span   题目   prot   get   ase   cte   ted   sdn   

原文地址:https://www.cnblogs.com/Peter-fight/p/10993666.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!