编译器对每个包含虚函数的类创建一个表(称为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++中虚函数 绑定的编译器实现(baidu 面试)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
【求职】有关面试和简历相关的总结与心得
Chavin-Chen
2020-06-01 12:03:07
【VCS】Git之无尽探索
Chavin-Chen
2020-06-01 12:02:57
【CVS】Git之无尽探索
Chavin-Chen
2019-03-15 19:39:38
【面试】有关面试的总结与心得
Chavin-Chen
2019-02-21 18:58:36
落幕--找工作尾声--等待
forrest2009
2018-09-03 00:17:11
MS电面一
forrest2009
2018-09-03 00:17:11
WebEX面试4面
forrest2009
2018-09-03 00:17:11
百度暑期实习生笔试
forrest2009
2018-09-03 00:17:11
webEX面试
forrest2009
2018-09-03 00:17:11
linux 下 进程和线程的区别(baidu 面试)
forrest2009
2018-09-03 00:16:59
qq暑期实习笔试2011
forrest2009
2018-09-03 00:16:59
2016打算做运维的人员必知必晓的知识 【转】
doIt999
2018-09-01 22:00:56