【问题标题】:What is the size of a class? [duplicate]一个班级的规模是多少? [复制]
【发布时间】:2026-02-13 00:20:02
【问题描述】:

可能重复:
Empty class in C++

class Class1
{
char c;
};

class Class2
{
};

Class1 和 Class2 的大小是多少?

在 VC6 中,我得到了两个 1. 有人可以解释一下吗?

【问题讨论】:

  • @jleedev:我不同意,他的班级不仅仅是一个空班,而且还有一个char c
  • @thyrgyle:重复关闭并不意味着问题完全相同,这意味着理解现有问题和答案也涵盖了新问题。这里就是这种情况。区分相同和重复的更清晰示例: Q1:前五个素数是什么? Q2:第三个质数是多少? Q2 可以作为 Q1 的欺骗而关闭。
  • @Ben:这是一个很好的例子。我在偷它。

标签: c++ class


【解决方案1】:

任何类的大小都不能小于一,因为指针算术(特别是减法运算符)可以除以大小,而除以零是未定义的。每个实例还必须有一个唯一的地址,这意味着必须为每个实例分配至少一个字节的地址空间,因此最小大小再次为 1。

sizeof (Class1) == 1 因为这是内容所需要的,sizeof (Class2) == 1 因为这是允许的最低要求。

【讨论】: