我看到很多人写道:“对于一个声明了虚函数的类,存在一个虚拟表。”
我的问题是,虚拟表只存在于声明有虚函数的类中吗?还是存在于从该类派生出来的类中?
例如:
class Base{
public:
virtual void print(){cout<<"Base Print\n";}
};
class Derived:public Base{
public:
void print(){cout<<"Derived print\n";}
};
//From main.cpp
Base* b = new Derived;
b->print();
问题:如果类派生没有虚函数表,那么输出就不会是“derived print”。因此,在任何声明了虚函数的类和从该类继承的类中都存在虚函数表。这个理解正确吗?