可能重复:
Empty class in C++
class Class1
{
char c;
};
class Class2
{
};
Class1和Class2的大小是多少?
在VC6中,我得到了两个1.有人可以解释一下吗?
答案 0 :(得分:6)
任何类的大小都不能小于1,因为指针运算(特别是减法运算符)可以除以大小,并且除以零是未定义的。每个实例都必须具有唯一的地址,这意味着必须为每个实例分配至少一个字节的地址空间,因此最小的大小也是一个。
所以sizeof (Class1) == 1
因为这是内容所需要的,sizeof (Class2) == 1
因为这是允许的最小值。