2

同じタイトルの投稿をお願いしました。しかし、誤解のため、すべての回答は、それが有効なコード/動作であるかどうかについて議論していました。

ただし、主な問題は、最適化が開始されるかどうかについてです。

リンクされた投稿を参照して、本物のケースを参照してください。

D *pD = new D;
pD->foo();  // `D::foo()` is `final`

すべてのコンパイラpD->foo()は、仮想メカニズムを起動しないことで呼び出しを最適化しますか?

[注:
前の質問で悪いコードの例を挙げたのはなぜですか?
上記の方法でベースから子にキャストすることは、適切なコードではないことを認識しています。主な目的は、最終的な Java のような最適化が行われるかどうかを確認することでした。最初の方法は、アセンブリに行かずにそれを確認できる唯一の方法でした。]

4

0 に答える 0