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