跳到主要内容

简述空类的大小是多少?为什么 ?

参考答案:

在C++中,一个空类的大小并不是0。这可能会让人感到困惑,因为从字面上看,一个“空”的类似乎应该不占用任何空间。然而,实际上,编译器通常会为类实例分配至少一个字节的空间,这主要是出于以下几个原因:

  1. 唯一性:如果空类的大小为0,那么创建的两个空类实例在内存中可能具有相同的地址。这将违反C++的规则,因为每个对象在内存中都应该有一个唯一的地址。
  2. 内存对齐:编译器通常会对数据进行内存对齐,以提高内存访问的效率。如果空类的大小为0,那么对齐规则可能会变得复杂且难以处理。
  3. 虚函数表:如果类包含虚函数,那么每个实例都需要一个指向虚函数表的指针。这个指针需要占用一定的空间,即使类本身为空。

因此,即使类没有成员变量或成员函数,编译器也会为其分配一定的空间。这通常是一个字节,但也可能因编译器和平台的不同而有所变化。

需要注意的是,这只适用于类的实例。如果你只是声明了一个空类类型的指针或引用,那么它们本身并不占用类的实例空间。