发生多态的一种情况
class Base { public: Base(int j) : i(j) {} virtual~Base() {} void func1() { i *= 10; func2(); //this指针调用func2(),this指针是&(调用func1()的对象)或调用func1的指针, //因此该指针调用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(); //Base指针pb在func1()中调用func2()时发生多态 cout << pb->getValue() << endl; delete pb; }
因此,输出结果为12。