什么是私有继承,它解决了哪些问题?

Meh*_*dad 3 c++ inheritance private-inheritance

有人可以解释一下C++中究竟是私有/受保护的继承是什么,以及它要解决的问题是什么?

class Bar { };
class Foo : private Bar { };
Run Code Online (Sandbox Code Playgroud)

我已经看过这个问题,但我仍然不明白它什么,更何况我应该使用它.

(与Java/C#或类似语言中的功能比较也可能有所帮助.)

Ale*_*zzi 5

私有继承模型"是以实现的方式实现的".意思类似于"has-a".不同之处是:

  1. 使用私有继承,您不需要编写包装器(适合懒惰的程序员)

  2. "has -a"允许您更好地控制,您可以只公开接口的子集或更改方法名称(如果您愿意).

  3. 私有继承使异常安全变得困难,请查看特殊的c ++以获取更多信息

  4. 当您想要使用基类的受保护成员时,您确实需要私有继承.

  5. 有时在混合类中使用私有继承(Effective c ++ memory management章节)

我个人的偏好是使用"has-a"作为一般用途,我在排除其他选项之后使用私有继承.