【发布时间】:2021-09-09 08:07:48
【问题描述】:
考虑以下程序:
#include<iostream>
using namespace std;
class base {
int arr[10];
};
class b1: virtual public base { };
class b2: virtual public base { };
class derived: public b1, public b2 {};
int main(void)
{
cout<<sizeof(derived);
return 0;
}
据我所知,由于虚拟基类,数组 arr 在类中仅继承一次。因此派生类的 sizeof 应该是 10*4=40 字节。但是,在执行时,该程序将打印 56 作为输出。我什至在编译器上检查了 int 的大小,它只有 4 个字节。有人能解释一下额外的 16 个字节是从哪里来的吗?
【问题讨论】:
标签: c++ virtual sizeof base-class