此问题在此处已有答案:
Why can empty base classes have a zero size?(5个答案)
What is the size of a derived class if a base class has no members?(1个答案)
9天前关闭
考虑下面的代码
class akay
{
};
int main()
{
akay object1;
cout<<"[output] size of "<<sizeof(object1)<<endl;
return 0;
}
字符串
在这种情况下,输出是[output] size of 1
,现在考虑下面代码
class akay
{
int i;
};
int main()
{
akay object1;
cout<<"[output] size of "<<sizeof(object1)<<endl;
return 0;
}
型
在这种情况下,输出是[output] size of 4
我们现在,在空类的情况下,1字节的存储分配给对象。我想知道,在非空类的情况下,对象的大小等于类中使用这一个额外字节的成员的大小之和。
谁知道答案,请提供一些参考。
1条答案
按热度按时间vdzxcuhz1#
空类的大小必须至少为1,因为否则就不能有数组。
任何类的大小都是类中所有成员的总和加上一个位。
处理器在加载一个8字节双精度型时速度更快,当它适合8字节边界时。所以在类中引入填充,以确保其每个成员都与正确的边界对齐。
这种算法意味着你可能会失去近一半的空间与对齐的原始成员。