1.45、C++中空类的大小是多少?

在C++中,空类的大小至少为1字节。这是因为C++标准规定:

  • • 每个对象必须有唯一的内存地址,
  • • 如果空类大小为0,那么多个空类对象的地址将会相同,违背对象模型的要求。

因此,编译器会为空类隐式分配1字节的空间作为占位符,确保每个实例拥有独一无二的地址。

关键点总结:

  • • 空类没有数据成员,但大小为1字节,用于保证对象的唯一地址。
  • • 成员函数(包括普通函数和静态函数)不占用对象空间。
  • • 如果空类作为基类,编译器可能启用“空基类优化”,使得该基类不占用额外空间。
  • • 空类大小与平台的内存对齐规则无关,统一为1字节。

举例说明:

class Empty {};

int main() {
    std::cout << sizeof(Empty) << std::endl; // 输出1
}

输出结果为1,表明空类实例占用1字节内存。
(加入我的知识星球,免费获取账号,解锁所有文章。)
本文首发于【讳疾忌医-note】公众号,未经授权,不得转载。

阅读剩余
THE END