有没有任何理由使得重写的C++虚函数的权限与基类不同?这样做是否存在任何危险?
例如:
class base {
public:
virtual int foo(double) = 0;
}
class child : public base {
private:
virtual int foo(double);
}
C++ faq表示这是个坏主意,但没有说明原因。
我在一些代码中看到过这种用法,我认为作者试图使类成为最终类(final),基于这样的一个假设:不可能重载(private)成员函数。然而,这篇文章展示了一个重载(private)函数的例子。当然,C++ FAQ中的另一部分建议避免这样做。
我的具体问题是:
使用派生类和基类中不同的权限来定义虚方法是否存在技术问题?
这么做是否存在合理的原因?