在实践中使用非公共C++继承的频率是多少?

Mr.*_*Boy 7 c++ inheritance

可能重复:
我什么时候应该使用C++私有继承?

我想制作这个社区维基但没有看到按钮......有人可以添加它吗?

我无法想到我是以非公开的方式从一个类派生出来的,而且我无法回想起看到这样做的代码.

我想听一下它有用的真实世界的例子和模式.

Mat*_* M. 6

你的旅费可能会改变...

核心答案是非公有继承是无用的.

就个人而言,我在两种情况中都使用它:

  • 如果可能的话,我想触发空基优化(通常,在模板代码中,谓词作为参数传递)
  • 我想覆盖virtual类中的一个函数

在任何一种情况下,我都使用private继承,因为继承本身就是一个实现细节.

我已经看到人们private在编写包装或扩展行为时更自由地使用继承,并且系统地使用继承而不是组合.C++不提供"简单"的委托语法,因此这样做可以让您编写using Base::method;以立即提供方法,而不是编写正确的转发调用(及其所有重载).我认为这是不好的形式,虽然它确实节省了时间.