我读到很多人在写“一个虚拟表存在于一个类中,该类中声明了一个虚函数”。
我的问题是,vtable 是否只存在于具有虚函数的类,或者它是否也存在于从该类派生的类。
例如
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();
问题:如果没有用于派生类的 vtable,那么输出就不会是“派生打印”。因此,IMO 对于任何声明了虚函数的类以及从该类继承的类都存在一个 vtable。它是否正确 ?