1

重複の可能性:
派生オブジェクトに対する C++ 仮想関数呼び出しは vtable を通過しますか?

特に gcc の c++ 仮想テーブルについて質問があります。次のコードを検討してください

class A{
public:
virtual void doSomething(){}

}

class B : public A{
public:
virtual void doSomething(){}
}

//1 

A* a = new A()
a->doSomething();

問題は、ポインター a が A のオブジェクトを指しているので、コンパイラーは仮想関数でわざわざルックアップを行うのか、それともこれを解決して仮想テーブルのがらくたを回避するのに十分スマートなのかということです。

ありがとう

4

0 に答える 0