//基类
class Base {
public:
virtual void f() { cout << "Base::f" << endl; }
};
//子类
class Case : public Base
{
public:
void f() { cout << "Case::f1" << endl; }
};
int main()
{
Base *B = new Case;
B->f();
}
主函数里的第一句是用子类去实例化一个基类对象,他为什么就掉用了 Case::f1,而不是Base::f1呢??
就算是找虚拟表 这个类型毕竟是Base类型的 他的f()函数也是虚的 为什么查找虚拟表的时候没找到自己的 而找到了子类的呢?? |