我有以下代码
class nest_empty
{
class empty{};
};
Run Code Online (Sandbox Code Playgroud)
大小nest_empty是1(在我的实现sizof空类是1)?如果是,为什么?可以nest_empty算是一个空类吗?
编辑:
class nest_empty
{
class empty{};
empty d;
};
Run Code Online (Sandbox Code Playgroud)
尺寸nest_empty仍然是1?如果是,为什么?
您的第一个版本nest_empty是一个空类(没有非静态数据成员,也没有非空基础),因此如果它们在您的实现中的大小为1,则它的大小为1.
"为什么"是因为空类的实现大小为1,而这又是因为它们的大小不能为0(标准禁止它),而您的实现者选择了1.
你的第二个nest_empty不是一个空类(它有一个非静态数据成员).它可以合法地具有大小1,因为它唯一的非静态数据成员d是类型empty,它是一个空类,因此可能是大小为1.
但是,我不能告诉你它实际上是否会有1的大小.问你的编译器.