How does the compiler benefit from C++'s new final keyword? この質問に記載されているように、メソッドのキーワードfinal
では、vtable呼び出しを単純な関数ポインタで最適化できます。最終クラスのメソッドは、デフォルトで関数最適化へのポインタに適用されますか?
私はクラスを持っている場合:
class Derived final : public Base
{
virtual void Foo() override;
//virtual void Foo() final override; Are these statements equal?
}
は最終としてマークこのような方法をコンパイラや代わりのvtableの関数ポインタを適用するのでしょうか? vc120とclangコンパイラの動作に興味があり、最高の最適化レベルが設定されています。
クラスは 'final'なので、もはやそれを継承することができないので、派生クラスの仮想メソッドをオーバーライドすることはできません。 – Jarod42
@ Jarod42、はい、私は質問タイトルをアップグレードしました。私は最適化の適用について質問に興味があります –
as-ifルールを尊重する限り、最適化を適用するのはコンパイラによるものです。私は両方の形式からコンパイラを等しく最適化することを期待します。 – Jarod42