Joh*_*ing 14
没有"虚拟指针"这样的东西.
面试官可能有一些意思:
operator->但就"虚拟指针"而言,没有这样的事情.
小智 6
当有一个或多个虚函数时,C++ 编译器会创建一个隐藏的类成员,称为 virtual-pointer 或简称 vptr。这个 vptr 是一个指向函数指针表的指针。该表也是由编译器创建的,称为虚函数表或 vtable。vtable 的每一行都是一个函数指针,指向对应的虚函数。
为了完成后期绑定,编译器为每个包含虚函数的类以及从它派生的类创建这个 vtable 表。编译器将该特定类的虚函数的地址放置在“vtable”中。
当通过基类指针进行虚函数调用时,编译器会悄悄插入代码以获取 VPTR 并在 VTABLE 中查找函数地址,从而调用正确的函数并导致后期/动态绑定发生。