1、只有一个直接基类
1) 派生类和基类会共用一个虚函数表。
2) 如果基类中的虚函数被覆盖,那么原本基类虚函数的位置会被覆盖它的派生类的虚函数替代。
3) 派生类中未覆盖基类中成员函数的虚函数也会被放进虚函数表中,接在基类后面,虽然不能被基类指针调用。
2、有多个直接基类
1) 有几个直接基类,就有几个虚函数表。
2) 如果基类中的虚函数被覆盖,那么原本基类虚函数的位置会被覆盖它的派生类的虚函数替代。
3) 派生类中未覆盖基类中成员函数的虚函数会被放入第一个虚函数表中,接在基类后面。
*C++ 子类覆盖了父类的虚函数后,为什么还可以引用父类的函数?
-
class A
-
{
-
public:
-
virtual void func(){ cout<<"A"<<endl; }
-
}
-
class B : public A
-
{
-
public:
-
virtual void func(){ cout<<"B"<<endl; }
-
}