Tag: 访问控制的

用C ++中的私有函数覆盖公共虚函数

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