基本クラスまたは派生クラス関数のどちらを呼び出すかについて、(実行時の)内部的にどのように決定されますか。決定は、(FNを呼び出すために取られる方法を以下のサンプルコードで)BとFN2の()します。派生クラス関数または基本クラス関数を呼び出すかどうかは、実行時にどのように決定されますか?
Class A {
virtual void fn() { std::cout << "A" < <std::endl; }
virtual void fn2() { std::cout << "A-fn2" < <std::endl; }
};
Class B : A
{
void fn() { std::cout << "B" < <std::endl; }
}
int main() {
B b = new B;
A *a = &b;
a->fn();
a->fn2();
}
出力BとA-FN2()
基本的にどのように決定派生クラス関数または基本クラスの関数を呼び出すかどうか、実行時に行われるでしょうか?コンパイルエラーを修正した後、あなたの質問に対する答えは、出力が可能になるということです
おそらくコンパイルすることはできません: -
このC++よくある質問は良いさらに読むのですか?また、[vtables](http://en.wikipedia.org/wiki/Virtual_method_table) –
-1ではなく、実際のコード –
を参照してください.Virtualキーワードを追加するのを忘れました。それについての謝罪。 **決定がどのように取られたかを詳しく説明できますか?**インタビュアーは内的なインパネーションを知ることが特にありました。彼は**仮想テーブルと呼ばれるものを暗示した** –