什么是虚拟指针? 大家好, 今天我接受了电话采访并得到一个问题:“什么是虚拟指针?” 我偶然发现了这个,所以在完成之后,我尝试了谷歌。不幸的是,它只给了我一个虚拟表参考。
那么简单英语中的虚拟指针是什么?你如何定义它?
谢谢。
答案 0 :(得分:14)
没有“虚拟指针”这样的东西。
面试官可能有一些意思:
operator->
但就“虚拟指针”而言,没有这样的事情。
答案 1 :(得分:4)
我的解释是:vtable指向虚拟方法的内容。
措辞不是很好,恕我直言。
答案 2 :(得分:4)
你的面试官很可能意味着虚拟桌面指针。 http://en.wikipedia.org/wiki/Virtual_table#Implementation
答案 3 :(得分:4)
当有一个或多个虚函数时,C ++编译器会创建一个名为virtual-pointer的隐藏类成员或简称vptr。这个vptr是一个指向函数指针表的指针。该表也是由编译器创建的,称为虚函数表或vtable。 vtable的每一行是指向相应虚函数的函数指针。
要完成后期绑定,编译器会为包含虚函数的每个类以及从中派生的类创建此vtable表。编译器将该特定类的虚函数的地址放在'vtable'中。
当通过基类指针进行虚函数调用时,编译器会安静地插入代码以获取VPTR并在VTABLE中查找函数地址,从而调用正确的函数并导致后期/动态绑定发生。
答案 4 :(得分:1)
它也可能意味着创建一个虚拟/虚拟的函数指针纯粹的父亲的方法,并与孩子调用它,仍然不是一个好的措辞......