复习手写笔记C++ 析构函数this指针虚表 转录

析构函数

  1. 理解 ~ 取反
  2. 无参、无返回值。→无重载
  3. free /delete 指针后置空

一个类的两个不同的对象,调用同一个成员函数(像p->print());两个成员函数是否一致?若一致的话,this 指针、虚表起到了什么作用?

函数是一致的, 可以理解为 "函数" 本质是工具而已,而 class 不过是隐含了以 this 与虚表的特殊命名空间。

this与虚表

  1. this 遵守 public/private/protected 限制访问成员与成员函数的权限
  2. 虚表是指向其类、子类的 "指针表 (vptr)",同样也受访问权限限制。

每个数据(相当于一个 "客户"),它自身既有一些属性数据 又有一些处理工具。

反过来理解:若每个成员均有一个工具,那么 "岂不是太浪费了"?所以函数仅仅是工具而已。即 "一致" 与否是 this 的在传递时决定,既一致又不一致。

this 指针

  1. 不能显式写入 this,编译时传参
  2. class_name * const this

存储位置?

A. 对象内部 B. 常量区 C. 栈

A:①存在栈内还有必要传吗?②sizeof 大小并没有计算 this 大小。

B: 只读的虚函数表 const 静态变量 /const 全局变量

C正确

注意:不要把 this 错误地理解为基于对象的成员指针。

空指针解引用报错?不一定!

相关推荐
蹊黎4 小时前
C++中vector类的部分简单实现
开发语言·c++·visual studio
xier_ran11 小时前
【infra之路】AI 编译器学习笔记(六):重拾 C++——lambda 与 MLIR 中的回调
c++·笔记·学习
jimy113 小时前
c++的 Type Traits (一)
开发语言·c++
别动我齐刘海14 小时前
Linux 系统调试学习2
linux·运维·c++·人工智能·学习·机器学习·机器人
ZZHow102415 小时前
Ascend C算子开发(高级)笔记
c++·人工智能·笔记·深度学习·华为云
aqiu11111115 小时前
【C++算法打怪专栏】LeetCode 217. 存在重复元素(解法总结)
c++·算法·leetcode
lojox16 小时前
深入理解 C++ STL:vector 底层实现、迭代器失效与 list 特性
开发语言·c++
微笑星河q16 小时前
C++类和对象(下)初始化列表、类型转换、static、友元、内部类、匿名对象
开发语言·c++
|_⊙17 小时前
C++ 类和对象零散知识点
开发语言·c++