#include<iostream>
using namespace std;
class abc
{
int a;
};
class xyz : public virtual abc
{
int b;
};
int main()
{
abc obj;
xyz obj1;
cout<<endl<<sizeof(obj);
cout<<endl<<sizeof(obj1);
return 0;
}
答案将取决于编译器,但当我看到结果时我很惊讶
~/Documents/workspace/tmp ‹.rvm-› $ ./class_sizes
4
16
如果我删除 virtual 关键字,那么分配的大小分别为 4 和 8,这是我所期望的。
为什么要占用额外的空间?我怀疑它是用于 vptr 表或类似的东西,但不确定。