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

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

虚函数表

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

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

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

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

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

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

虚函数表指针

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

一些问题

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

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

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

多态的实现

1.引用的底层是指针

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

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

http://www.xdnf.cn/news/2486.html

相关文章:

  • 《AI大模型应知应会100篇》第38篇:大模型与知识图谱结合的应用模式
  • 计算机三大主流操作系统的前世今生 - Linux|macOS|Windows
  • 多商户 | 可二次开发【全开源】小程序源码商城挑选指南!
  • SQLMesh 测试自动化:提升数据工程效率
  • 【MySQL专栏】MySQL数据库表的内外连接
  • PostgreSQL psql 命令和常用的 SQL 语句整理
  • Support for password authentication was removed on August 13, 2021
  • 顺风车app订单系统框架设计
  • Spring Boot API版本控制实践指南
  • 如何通过挖掘需求、SEO优化及流量变现成功出海?探索互联网产品的盈利之道
  • 如何培养团队的责任感与归属感
  • 深入理解 JavaScript 的 typeof 运算符:返回的数据类型
  • 【音视频】音频编码实战
  • Go语言--语法基础4--基本数据类型--字符串类型
  • 洞悉 NGINX ngx_http_access_module基于 IP 的访问控制实战指南
  • 《代码整洁之道》第12章 迭进 - 笔记
  • apkpure 谷歌插件 下载的apk包
  • array和模板进阶(详细使用)
  • ElasticSearch从入门到精通-覆盖DSL操作和Java实战
  • python实战项目65:drissionpage采集boss直聘数据
  • Nacos简介—4.Nacos架构和原理一
  • AI在医疗领域的10大应用:从疾病预测到手术机器人
  • vue3子传父——v-model辅助值传递
  • AI大模型从0到1记录学习 linux day21
  • 第三次作业
  • android10 卸载应用出现回退栈异常问题
  • Java求职者面试:从Spring Boot到微服务的技术深度探索
  • C++ RAII
  • 【今日三题】笨小猴(模拟) / 主持人调度(排序) / 分割等和子集(01背包)
  • Python 数据可视化进阶:精准插入图表到指定 Excel 工作表