以下のようなコードで、コンパイラはそれが実際に仮想テーブルルックアップa
のインスタンスであると判断し、最適化することができますか?B
#include <iostream>
class A
{
public:
virtual void f()
{
std::cout << "A::f()" << std::endl;
}
};
class B : public A
{
public:
void f()
{
std::cout << "B::f()" << std::endl;
}
};
int main()
{
B b;
A* a = &b;
a->f();
return 0;
}
Jonthan Sengとreimaの回答後の追加の質問:gccを使用する場合、vtableルックアップを最適化するためにフラグを使用する必要がありますか?