オーバーライドされたC++仮想関数のアクセス許可を基本クラスとは異なるものにする理由はありますか?そうすることで何か危険はありますか?
例えば:
class base {
public:
virtual int foo(double) = 0;
}
class child : public base {
private:
virtual int foo(double);
}
C ++のよくある質問には、それは悪い考えだと書かれていますが、その理由は書かれていません。
私はいくつかのコードでこのイディオムを見てきましたが、プライベートメンバー関数をオーバーライドすることは不可能であるという仮定に基づいて、作成者がクラスを最終的にしようとしていたと思います。ただし、この記事では、プライベート関数をオーバーライドする例を示します。もちろん、C++に関するよくある質問の別の部分ではそうしないことを推奨しています。
私の具体的な質問:
派生クラスと基本クラスで仮想メソッドに異なる権限を使用することに技術的な問題はありますか?
そうする正当な理由はありますか?