重写 C++ 虚函数的权限与基类不同是否有任何理由?这样做有任何危险吗?
例如:
class base {
public:
virtual int foo(double) = 0;
}
class child : public base {
private:
virtual int foo(double);
}
《C++ 常见问题解答》(C++ faq)指出这是一种不好的做法,但没有解释原因。
我曾在一些代码中看到过这个成语,我相信作者试图使类成为final,基于这样的假设:无法覆盖私有成员函数。然而,该文章展示了覆盖私有函数的示例。当然C++ FAQ的另一部分建议不这样做。
我的具体问题:
在派生类中使用不同的权限与基类中的虚方法有任何技术问题吗?
是否有合法的理由这么做?