用c ++命名的vptr名称?

时间:2012-08-25 06:16:28

标签: c++ virtual-functions

即使有很多关于如何在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是否也被命名为错误?

2 个答案:

答案 0 :(得分:9)

C ++标准甚至不承认多态类中存在vptr,因为它是一个实现细节,因此甚至不要求编译器以这种方式实现虚函数。所以不,vptr不是保留关键字(我认为这是你想要的)。

答案 1 :(得分:1)

你不能通过语言方式在C ++中访问vptr所以回答“no” - 没有这样的变量和名称,因此没有它的修改:)