- 6
- 0
- 约6.41千字
- 约 8页
- 2018-02-15 发布于河南
- 举报
动态联编实现原理分析
动态联编实现原理分析所谓动态联编,是指被调函数入口地址是在运行时、而不是在编译时决定的。C++语言利用动态联编来完成虚函数调用。C++标准并没有规定如何实现动态联编,但大多数的C++编译器都是通过虚指针(vptr)和虚函数表(vtable)来实现动态联编。基本的思路是:(1)为每一个包含虚函数的类建立一个虚函数表,虚函数表的每一个表项存放的是个虚函数在内存中的入口地址;(2)在该类的每个对象中设置一个指向虚函数表的指针,在调用虚函数时,先采用虚指针找到虚函数表,确定虚函数的入口地址在表中的位置,获取入口地址完成调用。我们将从以下几个方面来考察动态联编的实现细节。1.虚指针(vptr)的存放位置虚指针是作为对象的一部分存放在对象的空间中。一个类只有一个虚函数表,因此类的所有对象中的虚指针都指向同一个地方。在不同的编译器中,虚指针在对象中的位置时不同的。两种典型的做法是:(1)在Visual C++中,虚指针位于对象的起始位置;(2)在GNU C++中,虚指针位于对象的尾部而不是头部。可通过下面的程序考察在Visual C++中,虚指针在对象中的位置。#include iostreamusing namespace std;int globalv;class NoVirtual{int i;public:void func(){coutno virtual functionendl;}
您可能关注的文档
最近下载
- 2026大模型上下文工程终极指南(ContextEngineering).pdf
- 循经指压疗法【陈玉琴】.pdf VIP
- 柯美打印机维修模式进入方法.pdf VIP
- 标准图集-02S404-防水套管.pdf VIP
- 康力电梯KLA-MCU-201小键盘调试说明 V1.5.pdf VIP
- 心脑血管疾病患者的健康教育.pptx VIP
- 一种高效转移生长在衬底上的二维材料的方法.pdf VIP
- 健康生活方式与心脑血管疾病预防.pptx VIP
- 2020人教版高中英语选择性必修一~必修四课文翻译.docx
- 柯尼卡美能达 柯美 bh 246 236 226 216 206 复印机中文维修手册 (1).pdf VIP
原创力文档

文档评论(0)