原题目程序比较长, 我来简化成核心的考察部分, 如下:
#include <iostream>
using namespace std;
class A
{
public:
virtual void x()
{
cout << "A::x" << endl;
}
void y()
{
x();
cout << "A::y" << endl;
}
};
class B : public A
{
public:
virtual void x()
{
cout << "B::x" << endl;
}
virtual void y()
{
cout << "B::y" << endl;
}
};
int main()
{
A *p = new B;
p->y();
return 0;
}
结果:
B::x
A::y