8

仮想関数が派生クラスでオーバーライドされた C++11 より前の時代には、意図を明確にするために派生クラス関数にも virtual キーワードを追加することが推奨されていました。

現在、そのような関数は「オーバーライド」とマークされており、仮想ベース関数が必要であるという概念が含まれています。したがって、私は今、仮想を省略することを好みます:

class Derived: public Base {
public:
  void Overriden() override;
  // Instead of: virtual void Overriden() override;
};

ただし、これにより MSVC 2012 で IntelliSense エラーが発生します。'override' 修飾子には、明示的な 'virtual' キーワードを使用した仮想関数の宣言が必要です。

明らかに、コンパイラはクラスをコンパイルしますが、エラーは私にそれについて考えさせます。virtual キーワードを追加する正当な理由はまだありますか?

4

3 に答える 3

1

これは好みの問題だと思います:-)

私は、関数がすでに仮想であることを意味する定義の背後にのみオーバーライドを記述することを好みます。プログラマーは本質的に怠け者なので、ソースを短くしてください:-)

オーバーライドが必須であり、通常の変更プロセス中または実際のクラスのリファクタリング中に古いコードから仮想を削除する必要があるというルールをコーディング ガイドラインに追加しました。

しかし、これは私たちの解決策であり、技術的な理由はありません!

于 2013-09-12T13:28:11.657 に答える