对象模型
C++ 对象模型描述了对象在内存中的布局和组织方式,以及编译器如何实现继承、多态、虚函数等特性。理解对象模型有助于优化内存使用、调试问题和避免未定义行为。
[TOC]
基础对象
空类
空类(Empty Class) 是指不包含任何显式成员(如变量、函数)的类。尽管空类看似不占用内存,但实际上它的大小至少为 1 字节。
为什么空类的大小至少为 1 字节?
C++ 标准要求每个对象的地址必须唯一,如果空类大小为 0,则同一类型的不同对象会共享相同的内存地址。
编译器为空类隐式插入一个占位字节,确保对象有唯一地址。
普通类
普通类对象的成员变量存储规则如下:
非静态成员变量按声明顺序存储,并考虑字节对齐引入填充字节。
静态成员变量存储在数据段中,与具体的对象无关。
最后更新于