回忆一下多态规则,这里直接上例子,包括虚函数规则
#include <iostream>
#include <string>
#include <vector>
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()
{
x();
cout << "B::y" << endl;
}
};
int main()
{
A *a = new B;
a->y();
cout << "----------------" << endl;
B *b = (B *)a;
b->y();
return 0;
}
结果:
B::x
A::y
---------
B::x
B::y