我有以下代码
class nest_empty
{
class empty{};
};
nest_empty
的大小是否为1(在我的实现中,空类的sizof为1)?如果是,为什么?可以将nest_empty
视为一个空类吗?编辑:
class nest_empty
{
class empty{};
empty d;
};
nest_empty
的大小是否仍为1?如果是,为什么? 最佳答案
您的nest_empty
的第一个版本是一个空类(没有非静态数据成员,也没有非空基数),因此,如果它们在实现中的大小为1,则其大小为1。
“为什么”是因为空类的实现大小为1,这又是因为它们不能大小为0(标准禁止),而实现者选择了1。
您的第二个nest_empty
不是一个空类(它具有一个非静态数据成员)。它的合法大小可以为1,因为其唯一的非静态数据成员d
的类型为empty
,它是一个空类,因此大小可能为1。
但是,我无法告诉您它在实现中实际上是否具有大小1。询问您的编译器。
关于c++ - 嵌套空类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4256458/