【c++】封装,this指针
1. 封装性
- 核心思想:将数据(属性)和行为(成员函数)合成一个整体,通过访问权限控制隐藏内部细节。
- 访问权限:
public
:对外接口,提供数据访问和操作的方法。private
/protected
:隐藏实现细节,保护数据安全。
- 意义:提高代码安全性、可维护性,降低模块间耦合度。
2. 对象模型与 this 指针
对象内存模型:
仅为每个对象的数据分配区域 函数为各个对象公用
- 对象存储非静态数据成员,成员函数通过代码区共享只读。
- 静态成员(数据/函数)不属于对象,存储在数据区。
this 指针:区分是哪个对象调用的函数
编译器对程序员自己设计的类型进行编译时
1.识别记录类中属性 名称 类型 访问限定
2.识别记录类中函数原型 形参默认值 访问限定 virtual
3.改写类中定义函数参数列表和函数体
- 隐式参数,指向当前对象地址。
- 编译器自动将成员函数改写为
成员函数(类名* const this, ...)
。
this指针目的:
1.节省空间
2.区分函数调用对象
3.(c++中)通过寄存器传递(ECX)不允许修改指向
- 限制:不能用于
static
成员函数(无 this 指针)。 - 空类大小:至少 1 字节,用于标识对象存在。
this指针调用时:
book.Count()-->Count(&book)-->(函数调用)void Count(BOOK*const this)//指向不可改