0
虚函数时使用的虚表下面是一个例子:呼吁静态分配的对象
struct A {
virtual int f() const { return 1; }
};
struct B : A {
virtual int f() const { return 2; }
};
int main() {
B b;
cout << b.f() << endl;
}
是否有将要发生的调用f()
上的B
,或不实例虚拟查表?或者有可能,但编译器可以优化它吗?
为了使多态性正常工作,您需要一个指向基类的指针或引用。在你的情况下,不需要虚拟表查找,编译器可以自由优化它。 –
由于C++标准没有指定“虚拟表查找”,所以从您展示的C++程序的角度来看,很难回答这个问题。这可能更适合作为编译器供应商关于特定编译器的问题。 –
以上都不是,因为'B :: f'是私人的。 :P – aschepler