MST

星途 面试题库

面试题:C++ 空类内存布局及继承后的变化

描述C++ 空类的内存布局情况。若有一个空类A,另一个类B继承自A,此时类B的内存布局是怎样的,类B的大小又是多少,说明其原理。
29.1万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

1. C++ 空类的内存布局情况

  • 内存布局:从概念上讲,空类没有任何数据成员,似乎不需要占用内存空间。然而,C++ 标准规定,每个对象都必须有独一无二的地址。因此,空类实际上会占用1个字节的空间,这个字节不存储任何有效数据,仅用于标识对象的地址。
  • 类大小:空类的大小为1字节。

2. 类B继承自空类A的内存布局及大小

  • 内存布局:类B继承自类A,由于类A为空类,类B本身也没有添加新的数据成员时,从逻辑上看,类B也没有实际存储数据的成员。但同样基于C++ 每个对象必须有唯一地址的规定,类B的内存布局同样是占用一定空间用于标识其地址。
  • 类大小:类B的大小也是1字节。原理与空类A相同,C++ 标准要求每个对象都有独一无二的地址,即使类中没有实际的数据成员,也需要占用1个字节来满足这一要求。