如果我有一个基类并从中派生出10个不同的具体派生类,那么每个具体的派生类都会有不同的vtable吗?
答案 0 :(得分:4)
如果基类或所有派生类都有任何虚函数,那么通常是。为什么重要?
如果两个类具有一组虚拟函数,则它们只能共享一个vtable。 因此,如果派生类不覆盖任何虚函数,则它只能与基类共享vtable。
派生类不能与任何其他派生类共享vtable,除非它们都不覆盖同一基类的任何函数 - 即使以相同的方式实现 - 一个派生类的成员函数是与不同派生类的成员函数不同的类型。
答案 1 :(得分:0)
取决于派生类是否覆盖/声明任何虚方法。