0

これは基本的にベスト プラクティスの質問であり、 の使用目的に関する質問ですoverride

struct A
{
    virtual void func();
};

struct B : public A
{
    virtual void func() override;
};

上記の場合、 を使用するのは完全に合理的overrideです。Bこれは、仮想関数をfuncオーバーライドすることをユーザーに伝えますA(C++11 より前のコメントでのみ伝えることができた情報)。Aしかし、ユーザーがそれが基本クラスであると認識してはならない場合はどうでしょう... がA完全にprivate継承されている場合のように:

struct B : private A
{
    virtual void func() override;
};

この場合、ユーザーがB存在を知ってはならない内部実装の詳細についてユーザーに伝えています。の目的が、ライターが実際に何もオーバーライドしなかった場合にoverrideライターにエラーを与えることである場合は、それで問題ありません。Bしかし、目的がより多くの情報をユーザーに伝えることである場合、この場合は書くべきではないでしょうか?override

4

1 に答える 1

2

「オーバーライド」は単にそこにあるため、クラスの実装者は「このメソッドは私の基本クラスのメソッドをオーバーライドするはずです」と言うことができます。その場合、メソッドが基本クラスのメソッドを実際にオーバーライドしていない場合、コンパイラはエラーを提供します。これは、名前を間違って入力した場合や、基本クラスが後で変更された場合に発生する可能性があります。

編集: したがって、正しいコードを書くのに役立つツールです。ある種のドキュメント キーワードを意図したものではありません。

于 2012-07-08T20:20:38.937 に答える