第五十课 C++ 对象模型分析(上)
一、回顾
-
class 是一种特殊的 struct
在内存中 class 依旧可以看作变量的集合
class 与 struct 遵循相同的内存对齐规则
class 中的成员函数和成员变量是分开存放的
- 每个对象由独立的成员变量
- 所有对象共享类中的成员函数
二、C++ 对象模型分析
-
运行时的对象退化为结构体的形式
所有成员变量在内存中依次排布
成员变量间可能存在内存空隙
可以通过内存地址直接访问成员变量
访问权限关键字在运行时失效
-
类的成员函数位于代码段中
-
调用成员函数时对象地址作为参数隐式传递
-
成员函数通过对象地址访问成员变量
-
C++ 语法规则而隐藏了对象地址的传递过程
三、小结
- C++ 中的类对象在内存布局上与结构体相同
- 成员变量和成员函数在内存中分开存放
- 访问权限关键字在运行时失效
- 调用成员函数时对象地址作为参数隐式传递