質問: new Child(); // 以下はChildの関数が使われるかと思いきや、Parentの関数が使われる p_child->sing(); // オーバーライドした関数 // 仮想関数であれば、Childのものが使われる p_child->v_sing(); // オーバーライドした仮想関数 return 0; } ``` 実行結果を以下に示します。 ``` parent sing parent v_sing child sing child v_sing parent sing child v_sing ``` newするときに、アップキャスト(?)しない場合(実行結果の上から4行)、virtualを使っても使わなくても違いはないように思えます。 newするときに、アップキャスト(?)した場合(実行結果の下から2行)のみ、virtualを使う意味があるように思えます。 virtualは、アップキャスト(?)してnewしなければ意味がない、という認識は、正しいでしょうか?
回答: 正しいです。 と回答して、あなたになにか得られるものはあるでしょうか。 動作を理解するのもいいですが、なぜそういうことをするのか、それでなにが実現できるか、という オブジェクト指向というものの方も理解するようにしましょう