一道理解虚函数(多态)机制的题目
Posted peter-fight
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一道理解虚函数(多态)机制的题目相关的知识,希望对你有一定的参考价值。
一道理解虚函数(多态)机制的题目(摘抄)
以下程序输出为
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
以上是关于一道理解虚函数(多态)机制的题目的主要内容,如果未能解决你的问题,请参考以下文章