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

C++中的虚函数表结构框架

一.虚函数表介绍

Virtual Table虚函数表是实现多态的
每个有虚函数的类的实现,都有个指向虚函数的指针表(不管是父类还是子类)
指向虚表的指针是作为数据成员存在实例对象中
当调用虚函数时,就去查找对象的虚表中指向整顿派生类函数
虚函数表就是虚函数指针组成的一个数组
对于类的普通函数使用的是静态绑定,发生在编译期
对类的虚函数是动态绑定,发生在运行期
虚函数表的创建是在编译期完成
虚函数按照其声明的顺序放置在虚表中
虚表中 如果子类额外加了虚函数,父类的虚函数在子类的虚函数前面
虚表中,子类会覆盖父类的虚函数,子类没有覆盖的虚函数就沿用父类的
多重继承时,每个父类都有自己的虚函数表,子类的虚函数地址按照声明顺序放在第一个积累的虚表最后;

二.单向继承虚表模式

单向继承

三.多重继承虚表模式

多重集成

四.多重继承并有重写的

多重集成并重写

五.注意:

1.父类指针是不能调用子类中未覆盖父类的,而是自己新加的成员函数的行为都会被编译器视为非法;
2.如果父类的虚函数是private或是protected的,但这些非public的虚函数同样会存在于虚函数表中,所以事实上可以使用访问虚函数表的方式来访问这些non-public的虚函数,但这样又是不合理的。

http://www.lryc.cn/news/386746.html

相关文章:

  • 【ES】--Elasticsearch的高亮模式
  • 使用matlab开发stm32总结,stm32-matlab常见的问题处理以及报错合集
  • 落石滑坡监测报警系统:创新保障高速公路安全
  • Linux开发讲课20--- QSPI
  • VMware ESXi 8.0U3 macOS Unlocker OEM BIOS 集成驱动版,新增 12 款 I219 网卡驱动
  • vuepress使用简介及个人博客搭建
  • c#文件读写
  • WIFI 企业级认证手段 EAP-TLS介绍
  • 【网络架构】keepalive
  • 【Dison夏令营 Day 03】使用 Python 创建我们自己的 21 点游戏
  • Workbench密码登录登录失败
  • 哈尔滨高校大学智能制造实验室数字孪生可视化系统平台项目的验收
  • 009、MongoDB的分片策略
  • go~缓存设计配合singleFlight
  • 多线程引发的安全问题
  • 在晋升受阻或遭受不公待遇申诉时,这样写是不是好一些?
  • LeetCode 2710.移除字符串中的尾随零:模拟
  • 代码随想录训练营第二十三天 39组合总和 40组合总和II 131分割回文串
  • 【C++】数组、字符串
  • MySQL InnoDB支持几种行格式
  • Day6: 344.反转字符串 541. 反转字符串II 卡码网:54.替换数字
  • kubekey 离线安装高可用 kubernetes 集群
  • 大数据面试题之Hive(2)
  • 求推荐几款http可视化调试工具?
  • Python逻辑控制语句 之 判断语句--if else结构
  • word2016中新建页面显示出来的页面没有页眉页脚,只显示正文部分。解决办法
  • 8.javaSE基础进阶_泛型generics(无解通配符?+上下界统配符superextends)
  • 酒店客房管理系统(Java+MySQL)
  • S32K3 --- Wdg(内狗) Mcal配置
  • LeetCode 算法:二叉树的层序遍历 c++