【发布时间】:2018-01-17 14:45:12
【问题描述】:
class test
{
public:
enum t_number
{
ZERO,
ONE
};
enum t_test
{
TWO,
THREE
};
};
为什么上面类的大小是1而不是8?
当我在 main() 中这样做时
cout << "value of enum"<< test::ONE
我得到的输出为 1。
这是否意味着为枚举分配了内存?
【问题讨论】:
-
因为你只在你的类中声明了类型(没有成员)并且类的最小大小是 1。
-
因为你没有任何成员变量。一个对象仍然需要占据某个位置,以便可寻址,所以它仍然是一个单字节,因此可以存储在内存中。
-
你没有声明数据成员...
-
为什么会是 8?它不包含任何数据。 C++ 不允许大小为 0 的对象(因为这会导致各种不好的事情,例如多个对象具有相同的地址和数组的行为超级怪异),因此 1 是理想的选择。