复习手写笔记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 错误地理解为基于对象的成员指针。

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

相关推荐
FlightYe1 天前
视界原理之3D视频(四):裸眼、眼镜和头显
android·linux·c++·3d·ffmpeg·音视频
by209991 天前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
Rover Ramble1 天前
C++ 用互斥锁实现读写锁
开发语言·c++
你怎么知道我是队长1 天前
C++零基础入门第2周:数据类型、运算符与表达式完全指南(附20段可运行代码+避坑清单)
c++
say_fall1 天前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
雪落漂泊1 天前
C++算法 滑动窗口篇(下)
开发语言·c++
你怎么知道我是队长1 天前
C++零基础第3周:if/else、switch、for/while/do-while 控制流完全指南(附20段可运行代码+避坑清单)
java·开发语言·c++
青少儿编程课堂1 天前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析
c++·python·算法·bfs·信息学竞赛
雷✘1 天前
C++ 类与对象的初始化机制、成员访问边界与拷贝优化
java·网络·c++
努力实干1 天前
简单工厂模式(Simple Factory Pattern)——C++
开发语言·c++·简单工厂模式