仮想最終機能(基本クラスでfinal
)にvtable /仮想コストはありますか?基本クラス(仮想テーブル/仮想コスト)での仮想最終機能のコスト
class B{
public: virtual void fFinal() final{ .... do something ..... }
public: void fCheap() { .... do something ..... }
public: virtual void fVirtual() { .... do something ..... }
};
class C : public B{
public: virtual void fVirtual() { .... do something ..... }
};
fCheap()
またはfVirtual()
のfFinal()
=コストの費用がかかりますか?
ヒューマンエラーを防ぐためにfinal + virtualを使用します(「私を無効にしないでください」)。
fCheap()
はまだ親の機能を隠すことができるので、あまり安全ではありません。
以下のリンクからは回答が得られません。
- What's the point of a final virtual function?
- Does the cost of virtual functions increase with the number of classes in the inheritance tree?
- http://en.cppreference.com/w/cpp/language/final
vtableが生成されていることを示す証拠があります - >私がvtableのコストを被ることを暗示しますか? – javaLover
@javaLoverはい、そうだと思います。 –
私はこのアイデアを一般化しようとしています。 'D'は単一の関数(非仮想)' f1() 'を持つクラスであるとします。後で、仮想最終関数 'f2()'を追加します。 'f1()'もvtableインダイレクションから遅くなりますか? – javaLover