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

C++ 派生类中的方法调用是否算作虚拟函数调用?,c++,C++,假设我有一个抽象基类和一个派生类 class Base { public: virtual void doSomething() = 0; } class Derived: public Base { private: void doSomethingSpecificA(); void doSomethingSpecificB(); public: void doSomething(); } 我用 Base *instance = new Derived;.

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

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()
调用私有方法
dosomethingsspecifica()
dosomethingsspecificb()
。对
特定
函数的这些内部调用是否需要与原始调用
doSomething()
所需的vtable工作量相同?或者它们仅仅等同于一个标准方法调用

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


否。对
doSomethingSpecificA
doSomethingSpecificB
的调用不涉及查找/动态分派,因为它们不是虚拟成员函数

或者它们仅仅等同于一个标准方法调用


是。

dosomethingsspecifica
dosomethingsspecificb
不是虚拟函数,vtable中首先没有它们的条目。对它们的调用是常规方法调用。检查生成的部件,请参见。