c++ 在空类的情况下,对象的大小为1字节,但在非空类的情况下,对象的大小不等于类成员的大小+ 1 [重复]

3htmauhk  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(136)

此问题在此处已有答案

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字节的存储分配给对象。我想知道,在非空类的情况下,对象的大小等于类中使用这一个额外字节的成员的大小之和。
谁知道答案,请提供一些参考。

vdzxcuhz

vdzxcuhz1#

空类的大小必须至少为1,因为否则就不能有数组。
任何类的大小都是类中所有成员的总和加上一个位。
处理器在加载一个8字节双精度型时速度更快,当它适合8字节边界时。所以在类中引入填充,以确保其每个成员都与正确的边界对齐。
这种算法意味着你可能会失去近一半的空间与对齐的原始成员。

相关问题