虚拟指针

Atu*_*tul 12 c++

什么是虚拟指针?嗨,全部,今天我接受了电话采访并得到一个问题:"什么是虚拟指针?" 我偶然发现了这个,所以在完成之后,我尝试了谷歌.不幸的是,它只给了我一个虚拟表参考.

那么普通英语中的虚拟指针是什么?你是如何定义它的?

谢谢.

Joh*_*ing 14

没有"虚拟指针"这样的东西.

面试官可能有一些意思:

  • 指向多态类的指针
  • 指向多态类的vtable的指针(credit @Maxim)
  • 多态类的vtable中的指针
  • 具有重写的智能指针对象 operator->
  • 指向虚拟成员函数的指针(credit @ Matthieu M)

但就"虚拟指针"而言,没有这样的事情.


小智 6

当有一个或多个虚函数时,C++ 编译器会创建一个隐藏的类成员,称为 virtual-pointer 或简称 vptr。这个 vptr 是一个指向函数指针表的指针。该表也是由编译器创建的,称为虚函数表或 vtable。vtable 的每一行都是一个函数指针,指向对应的虚函数。

为了完成后期绑定,编译器为每个包含虚函数的类以及从它派生的类创建这个 vtable 表。编译器将该特定类的虚函数的地址放置在“vtable”中。

当通过基类指针进行虚函数调用时,编译器会悄悄插入代码以获取 VPTR 并在 VTABLE 中查找函数地址,从而调用正确的函数并导致后期/动态绑定发生。


JB.*_*JB. 5

我的解释是: vtable\xe2\x80\x94 的内容指向虚拟方法。

\n\n

恕我直言,这不是一个很好的措辞。

\n


Max*_*kin 5

你的面试官很可能是指虚拟表指针。http://en.wikipedia.org/wiki/Virtual_table#Implementation