C++中虚函数 绑定的编译器实现(baidu 面试)
2011-05-12 09:37
176 查看
编译器对每个包含虚函数的类创建一个表(称为V TA B L E)。在V TA B L E中,编译器放置特定类的虚函数地址。在每个带有虚函数 的类中,编译器秘密地置一指针,称为v p o i n t e r(缩写为V P T R),指向这个对象的V TA B L E。通过基类指针做虚函 数调用时(也就是做多态调用时),编译器静态地插入取得这个V P T R,并在V TA B L E表中查找函数地址的代码,这样就能调用正确的函数使 晚捆绑发生。为每个类设置V TA B L E、初始化V P T R、为虚函数调用插入代码,所有这些都是自动发生的,所以我们不必担心这些。利用虚函 数,这个对象的合适的函数就能被调用,哪怕在编译器还不知道这个对象的特定类型的情况下。(《C++编程思想》)
相关文章推荐
- C++中虚函数与晚绑定的编译器实现
- C++中虚函数与晚绑定的编译器实现
- C++异常机制的实现方式和开销分析 (大图,编译器会为每个函数增加EHDL结构,组成一个单向链表,非常著名的“内存访问违例”出错对话框就是该机制的一种体现)
- 从string类的实现看C++类的四大函数(面试常见)
- 某山面试 3、实现如下函数:
- 简析function/bind如何实现类成员函数指针绑定调用
- JavaScript实现跨浏览器的添加及删除事件绑定函数实例
- Vim编译器配合ctags实现函数原型快速定位
- 惰性加载函数----实现浏览器通用的事件绑定函数
- 软件工程师面试编程常见函数实现
- 字符串操作函数的实现【笔试面试经常考的,这里都有了】
- 晒晒C++:虚函数的真相(VC编译器如何实现“virtual ”规则)
- 虚函数 动态绑定 实现方式是:虚函数表
- 编译器对C++ 11变参模板(Variadic Template)的函数包扩展实现的差异
- <笔试><面试>编写一个排序函数,实现,既可以排序整形数组,又可以排序字符串。
- 淘宝面试-Strcpy与memcpy两函数的经典实现
- 虚函数的真相(VC编译器如何实现“virtual ”规则)
- 虚函数的真相(VC编译器如何实现“virtual ”规则)
- 淘宝面试-Strcpy与memcpy两函数的经典实现
- 【LeetCode-面试算法经典-Java实现】【028-Implement strStr() (实现strStr()函数)】