C++ 动态绑定
2024-10-21 03:16:40
1.为每一个包含虚函数的类设置一个虚表(VTABLE)
每当创建一个包含有虚函数的类或从包含虚函数的类派生一个类时,编译器就会为这个类创建一个VTABLE。在VTABLE中,编译器放置了这个类中,或者它的基类中所有已经声明为 virtual的函数的地址。如果在这个派生类中没有对基类中声明为 virtual 的函数进行重新定义,编译器就使用基类的这个虚函数的地址。而且所有VTABLE中虚函数地址的顺序是完全相同的。
2.初始化虚指针(VPTR)
然后编译器在这个类的各个对象中放置VPTR。VPTR在对象的相同的位置(通常都在对象的开头)。VPTR必须被初始化为指向相应的VTABLE。
3.为虚函数调用插入代码
当通过基类的指针调用派生类的虚函数时,编译器将在调用处插入相应的代码,以实现通过VPTR找到VTABLE,并根据VTABLE中存储的正确的虚函数地址,访问到正确的函数。
最新文章
- listener监听器的相关知识
- 让微信扫描直接下载你的APK
- 【读书笔记《Android游戏编程之从零开始》】5.Android 游戏开发常用的系统控件(ProgressBar、Seekbar)
- 单利 复利计算器程序1.0 2.0 3.0 [ 合 ] 之 WEB
- jQuery文本框(input textare)事件绑定方法教程
- POJ2506——Tiling
- Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
- FMX手机app,如何下载网站图片而不卡界面
- Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (一)
- mongodb中limit与skip方法
- Lucene全文检索引擎
- Python——汇总
- IIS 一键安装及卸载
- React列表
- shell中mail发邮件的问题
- PYTHON-模块 sys os random shutil-练习
- Spring @Configuration 和 @Bean 注解
- 761A Dasha and Stairs
- python中如何打印某月日历
- python Linux flask uwsgi nginx 在centos7.3部署