派生类中的方法调用是否算作虚函数调用?

时间:2016-01-30 21:27:44

标签: c++

假设我有一个抽象基类和类似的派生类,

class Base {
public:
    virtual void doSomething() = 0;
}

class Derived: public Base {
private:
    void doSomethingSpecificA();
    void doSomethingSpecificB();
public:
    void doSomething();
}

我用

初始化我的派生类
Base *instance = new Derived;.

现在,假设我将doSomething的衍生版本称为:

instance->doSomething();

doSomething()调用私有方法doSomethingSpecificA()doSomethingSpecificB()。对specific函数的这些内部调用是否需要与doSomething()的原始调用所需的相同数量的vtable工作?或者它们只相当于标准方法调用?

1 个答案:

答案 0 :(得分:0)

  

对特定功能的这些内部调用是否需要与原始调用doSomething()所需的相同数量的vtable工作?

没有。调用doSomethingSpecificAdoSomethingSpecificB时不涉及查找/动态调度,因为它们不是虚拟成员函数。

  

或者它们只相当于标准方法调用?