【发布时间】:2010-10-03 19:57:07
【问题描述】:
是否有任何理由使重写的 C++ 虚函数的权限不同于基类?这样做有什么危险吗?
例如:
class base {
public:
virtual int foo(double) = 0;
}
class child : public base {
private:
virtual int foo(double);
}
C++ faq 说这是个坏主意,但没有说明原因。
我在一些代码中看到了这个习语,我相信作者试图使这个类成为最终的,基于不可能覆盖私有成员函数的假设。但是,This article 显示了一个覆盖私有函数的示例。当然another part of the C++ faq 建议不要这样做。
我的具体问题:
在派生类和基类中对虚拟方法使用不同的权限是否存在任何技术问题?
是否有正当理由这样做?
【问题讨论】:
-
重新发明“受保护”的我们吗?
标签: c++ overriding access-control virtual-functions