是否有任何理由使重写的 C++ 虚函数的权限不同于基类?这样做有什么危险吗?
例如:
class base {
public:
virtual int foo(double) = 0;
}
class child : public base {
private:
virtual int foo(double);
}
C++ 常见问题解答说这是一个坏主意,但没有说明原因。
我在一些代码中看到了这个习语,我相信作者试图使这个类成为最终的,基于不可能覆盖私有成员函数的假设。然而,这篇文章展示了一个重写私有函数的例子。当然,C++ 常见问题的另一部分建议不要这样做。
我的具体问题:
在派生类和基类中对虚拟方法使用不同的权限是否有任何技术问题?
有任何正当理由这样做吗?