0

virtual派生クラスのヘッダー ファイルにキーワードを配置するのがベスト プラクティスですか?

次に例を示します。

class A
{
public:
    virtual void Func();
};

クラス B を次のように派生させますか。

class B : public A
{
public:
    virtual void Func();
};

またはこれ:

class B : public A
{
public:
    void Func();
};
4

3 に答える 3

3

オーバーライド指定子を使用するのがベスト プラクティスです。

オーバーライドがある場合、上記のリンクされた例に見られるように、仮想は冗長です。

于 2013-11-07T00:50:18.520 に答える
3

はい、明示性は通常、ベスト プラクティスと見なされます。virtual関数をオーバーライドできる場合、言語は指定子が暗黙的に追加されることを指定しますが、それは「卑劣」です。

C++11 では修飾子overridefinal修飾子も追加されているため、完全に新しい関数を定義するのではなく、ベースを拡張していることを確認できます。

これらの修飾子には、仮想関数が必要です。それらは暗示的ではありませんvirtualが、暗黙的なものvirtualはそこにある必要があります。しかし繰り返しになりますが、明示性が最善のポリシーです。

于 2013-11-07T00:50:38.683 に答える
0

一般に、必要に応じて明示することが最善です。派生クラスで関数をオーバーライドする場合は、それを指定する必要があります。その関数を再度オーバーライドするつもりがない場合は、それを final にします。宣言は、クラスのユーザーとの契約です。明確に (かつ簡潔に) すると、間違って使用される可能性が低くなります。

于 2013-11-07T00:51:51.437 に答える