即使有太多关于如何在c++中处理虚拟函数的文章,我也无法消除一个基本的疑问。基类变量是否覆盖派生类的vptr变量。 ptr变量是否也被重命名?
Class Base
{
public:
virtual void test();
};
class Derived
{
public:
virtual void test();
};
如果我打电话
Base b = new Derived();
b->test();
变成
(*b->vptr[<index>])(b);
索引指向vtable条目的位置。
我的疑问是这个vptr是否也被篡改了吗?
最佳答案
C++标准甚至不承认多态类中存在vptr
,因为它是实现细节,因此甚至不需要编译器以这种方式实现虚函数。所以不,vptr
不是保留关键字(这是我认为您要询问的内容)。
关于c++ - vptr名称在C++中变形了吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12119698/