派生,具体,类的vtables

时间:2009-08-02 12:01:11

标签: c++ polymorphism vtable virtual-method

如果我有一个基类并从中派生出10个不同的具体派生类,那么每个具体的派生类都会有不同的vtable吗?

2 个答案:

答案 0 :(得分:4)

如果基类或所有派生类都有任何虚函数,那么通常是。为什么重要?

如果两个类具有一组虚拟函数,则它们只能共享一个vtable。 因此,如果派生类不覆盖任何虚函数,则它只能与基类共享vtable。

派生类不能与任何其他派生类共享vtable,除非它们都不覆盖同一基类的任何函数 - 即使以相同的方式实现 - 一个派生类的成员函数是与不同派生类的成员函数不同的类型。

答案 1 :(得分:0)

取决于派生类是否覆盖/声明任何虚方法。