【发布时间】:2020-02-01 16:18:58
【问题描述】:
在下面的代码中,为什么D 的大小是16 而不是8 字节?
我认为因为我们有虚拟基类,所以应该只有一个A 的实例。
class A
{
public:
int x_;
int y_;
};
class B : virtual public A
{
};
class C : virtual public A
{
};
class D : public B, public C
{
};
【问题讨论】:
-
对于聚合类型的大小和布局的任何问题,请先给出您机器上基本类型的大小。
-
他们还需要一些方法来访问那个实例,通常是保存一个指针或偏移量。
-
您可以通过Compiler Explorer回答您的问题及更多内容。
标签: c++ multiple-inheritance sizeof virtual-inheritance memory-layout