具有更大大小的虚拟类

Virtual Classes having more size

本文关键字:虚拟      更新时间:2023-10-16
class abstract 
{double abs; };
class A : virtual public abstract
{ double var; };
class B : virtual public abstract
{ double var; };
class derived : public A, public B
{ double der; };

sizeof(abstract) = 8

sizeof(A) = 24

sizeof(B) = 24

sizeof(derived) = 48

为什么会发生这种情况?

(注:不含virtual类,返回大小分别为8、16、16、40)

它要求类型存储更多的信息来促进虚拟行为。