析构函数
理解 ~取反- 无参、无返回值。→无重载
- free /delete 指针后置空
一个类的两个不同的对象,调用同一个成员函数(像p->print());两个成员函数是否一致?若一致的话,this 指针、虚表起到了什么作用?
函数是一致的, 可以理解为 "函数" 本质是工具而已,而 class 不过是隐含了以 this 与虚表的特殊命名空间。
this与虚表
- this 遵守
public/private/protected限制访问成员与成员函数的权限 - 虚表是指向其类、子类的 "指针表 (vptr)",同样也受访问权限限制。
每个数据(相当于一个 "客户"),它自身既有一些属性数据 又有一些处理工具。
反过来理解:若每个成员均有一个工具,那么 "岂不是太浪费了"?所以函数仅仅是工具而已。即 "一致" 与否是 this 的在传递时决定,既一致又不一致。
this 指针
- 不能显式写入 this,编译时传参
class_name * const this
存储位置?
A. 对象内部 B. 常量区 C. 栈
A:①存在栈内还有必要传吗?②sizeof 大小并没有计算 this 大小。
B: 只读的虚函数表 const 静态变量 /const 全局变量
C正确
注意:不要把 this 错误地理解为基于对象的成员指针。
空指针解引用报错?不一定!