【发布时间】:2011-08-19 18:02:55
【问题描述】:
可能重复:
Difference between private, public and protected inheritance in C++
在 C++ 中导出为受保护或私有有什么区别?我无法弄清楚,因为两者似乎都限制了派生类对象的基类成员访问
【问题讨论】:
-
坦率地说,两者都有点浪费空间。在超过 25 年的专业 C++ 编程中,我从来没有在愤怒中使用过任何一种。
-
@unapersson:我从未使用过受保护的继承,但我以前使用过私有继承。类从只读接口公开继承,从读写接口私下继承。然后它可以将自己传递给期望读写接口的函数,但任何其他类或函数都必须使用只读接口。节省了宣布朋友。在 Builder 模式的实现中使用它。
-
@Daniel 对我来说,组合总是会战胜私有继承,因为它减少了耦合。但是YMMV。受保护的继承一直是一个螺栓 - 我似乎记得它是在 cfront 2.x 的某个时候添加的,仅仅是因为有人认为公共/受保护/私有访问应该反映在继承说明符中。但也许我的记忆在耍花招。
-
@unapersson:私有继承有时对于从 boost::noncopyable 之类的东西派生很有用。也就是说,当您尝试隐藏界面(复制 ctor 等)而不是公开界面时。
-
我想指出私有继承的一个重要用途是启用空基优化。除此之外,我觉得从不使用它很舒服。
标签: c++