私はいつもoverride
とfinal
は、メンバー関数宣言子の後でなければならなぜ意思決定、について不思議に思っていました:私にとって関数宣言子の後に "override/final"を配置する必要があるのはなぜですか?
struct Base {
virtual void virtFun();
};
struct Foo: Base {
virtual void virtFun() override;
};
、virtual
の代わりにoverride
/final
を置くために、より論理的な次のようになります。
struct Base {
virtual void virtFun();
};
struct Foo: Base {
override void virtFun();
};
これには理由がありますか?たぶんpre C++ 11との互換性の問題?
'virtual void virtFun()override'も書くことができます – Justin
「オーバーライド」は新しいキーワードであるため、技術的な理由は考えられません。誰が "オーバーライド"キーワードを考えていたかは、それがどこに属しているか、完全に任意であると判断しました。特別な理由はありません。 –
'' virtual void virtFun()override 'の@Justinの2つの指定子は、 'override'はメソッドが' virtual'を意味するので冗長です。 – VTT