考虑下面的代码片段:
class A
{
};
class B:public virtual A
{
};
class C:public virtual A
{
};
class D:public B,public C
{
};
int main()
{
cout<<sizeof(A)<<" "<<sizeof(B)<<" "<<sizeof(C)<<" "<<sizeof(D));
return 0;
}
我得到的输出为:
1 4 4 8
由于. B
_ C
_ vptr
这是否意味着它virtual table
是为类B
和创建的C
?怎么样A
?
一般来说,编译器究竟为哪些类创建了virtual table
菱形继承?
创建虚拟表的决定是编译器特定的吗?
请在上述示例或任何其他更好示例的上下文中回答。