C++对象模型 — 虚函数+虚基类+ 各种魔幻的组合,用最形象的描述,让你明白

大家好,我是 DongGu ,是一名软件工程专业大二的学生,写博客一方面是为了记录自己的学习过程,把自己犯的错误进行分享。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!有任何问题可以评论 或者 ___>
QQ联系(1521839703)
个人博客网站也搭好啦: dongguxy.top

1. 关于虚析构的认识

C++对象模型 --- 虚函数+虚基类+ 各种魔幻的组合,用最形象的描述,让你明白
  1. 我们都知道, 有了虚函数,就有了虚函数表,有了虚函数表,就会继承父类的虚函数表的内容,如果子类没有重写父类的虚函数方法,那么该函数地址不会变化,如果写了,那么就会更新虚函数表的函数地址,
  2. 然后我们又想,如果父类实现虚析构函数,子类没有实现怎么办我们要记住,如果父类有虚函数,系统会给我们实现一个默认构造函数,默认析构函数,默认拷贝构造函数,后面会讲,
  3. 调用虚函数的时候,就会读到虚函数表的地址,再通过偏移量去调用,因为虚函数表的函数位置是不变的,函数地址在编译前就确定了的

测试代码

2. 虚函数

  • 多重继承下的虚函数,一图以蔽之

C++对象模型 --- 虚函数+虚基类+ 各种魔幻的组合,用最形象的描述,让你明白

3. 虚基类

  1. 虚继承父类,类中有虚函数

C++对象模型 --- 虚函数+虚基类+ 各种魔幻的组合,用最形象的描述,让你明白
  1. 虚继承父类,父类有虚函数

    C++对象模型 --- 虚函数+虚基类+ 各种魔幻的组合,用最形象的描述,让你明白

测试代码

来源:DongGu.

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年3月26日
下一篇 2022年3月26日

相关推荐