虚拟继承的情况下,vtable(或者为什么需要vtable)有什么用?在这种情况下,这个vtable指向了什么。
示例:
class A
{
void show()
{ }
};
class B : virtual A
{
void disp()
{ }
};
在上面的例子中,B类的大小是8个字节。这意味着B类的vptr指向Vtable。这个vtable指向的是什么。
答案 0 :(得分:0)
vtable是在C ++中实现virtual
关键字的最常用方法 - 任何使用virtual
关键字的类都将为其创建一个vtable,并且该类的每个实例都将包含一个指向那个(单个)vtable的指针。 vtable包含有关对象的动态类(支持dynamic_cast
和typeinfo
)的信息,以及有关类的虚拟基类和函数所在位置的信息。
在这种特定情况下,B
的vtable可能只包含动态类信息,因为A
没有数据成员或虚函数。