当前位置: 首页 > news >正文

虚函数表的设计和多态的实现

虚函数表

1.包含虚函数的类会有对应的虚函数表,这个表在编译时就初始化好了

2.本质是一个函数指针数组,里面是虚函数的指针

3.该类实例化的对象共用一张虚函数表

4.子类的虚函数表会继承父类的虚函数,如果继承多个父类那就把父类的虚函数合一块

5.重写父类虚函数可以把子类虚函数表中原来的父类的虚函数指针改为现在的子类虚函数指针

6.子类新增的虚函数直接加入子类虚函数表就是

虚函数表指针

1.对象的头4/8个字节就是虚函数表指针

一些问题

1.虚函数表需要对象的指针才可以找到,所以静态成员函数,友元函数玩不了

2.析构函数设为虚函数,在子类虚表中就是子类析构,在多态delete父类指针时,通过去虚表中查找可以正确调用子类析构,避免内存泄漏

3.内联函数和虚函数是冲突的,内联函数会将函数的指令展开在程序中,而虚函数是通过虚表去查找调用

多态的实现

1.引用的底层是指针

2.父类指针既可以指向子类对象也可以指向父类对象

3.无论指向父类对象还是子类对象,调用虚函数都是取头4/8字节的虚函数指针,去查虚表调用对应虚函数

相关文章:

  • Vue3 Element Plus el-tabs数据刷新方法
  • 头歌实训之游标触发器
  • Android LiveData关键代码
  • 对鸿蒙 Next 系统“成熟论”的深度剖析-优雅草卓伊凡
  • 游戏哪些接口会暴露源IP?_深度解析服务器通信安全隐患
  • 关于 Web 服务器的五个案例
  • 迷你世界UGC3.0脚本Wiki组件说明
  • 进程控制的学习
  • Ubuntu 磁盘空间占用清理(宝塔)
  • 蓝桥杯 16. 密文搜索
  • C# 利用log4net 工作台打印和保存到文件
  • Redis使用总结
  • 从基础到实战的量化交易全流程学习:1.3 数学与统计学基础——概率与统计基础 | 数字特征
  • MIT6.S081 - Lab10 mmap(文件内存映射)
  • 学习笔记—双指针算法—移动零
  • (done) 吴恩达版提示词工程 8. 聊天机器人 (聊天格式设计,上下文内容,点餐机器人)
  • Spark-Streaming2
  • 【Azure Redis 缓存】在Azure Redis中,如何限制只允许Azure App Service访问?
  • Git常用命令简明教程
  • Git 撤回合并提交
  • 中消协发布“五一”消费提示:践行“光盘行动”,抵制餐饮浪费
  • 准85后青海海北州副州长、州公安局局长李贤荣赴山东临沂挂职
  • 主播说联播丨六部门出台新政!来华买买买,实惠多多多
  • 新城市志|中国消费第一城,迎来“补贴力度最大”购物节
  • 陈平评《艺术科学的目的与界限》|现代艺术史学的奠基时代
  • 印控克什米尔恐袭引爆印巴新一轮外交摩擦,地区安全风险骤增