【发布时间】:2020-07-16 04:31:14
【问题描述】:
这是我想知道的事情。有 2 个指针对应 2 个类实例。该代码打印出 6 行(根据 cmets)。前 4 行对我来说是有意义的,但我不明白后 2 行。我希望第 5 行和第 6 行等于第 3 行和第 4 行,因为 pb 和 pd 现在都指向同一个对象。请帮我理解。
#include <iostream>
using namespace std;
class B {
public:
virtual void run1(){cout << "Base" << endl;}
void run2(){cout << "Base" << endl;}
};
class D: public B {
public:
virtual void run1(){cout << "Derived" << endl;}
void run2(){cout << "Derived" << endl;}
};
int main(int argc, char* argv[])
{
B b, *pb;
D d, *pd;
pb = &b;
pb->run1(); //Base
pb->run2(); //Base
pd = &d;
pd->run1(); //Derived
pd->run2(); //Derived
pb = &d;
pb->run1(); //Derived (why ?)
pb->run2(); //Base (why ?)
}
【问题讨论】:
标签: c++ class inheritance polymorphism virtual-functions