与 protected 继承不同,C++ 私有(private)继承进入了主流 C++ 开发。但是,我仍然没有找到它的好用处。
你们什么时候用?
最佳答案
我一直在使用它。我脑海中的几个例子:
- 当我想公开基类的部分但不是全部接口(interface)时。公共(public)继承将是一个谎言,如 Liskov substitutability已损坏,而组合则意味着编写一堆转发函数。
- 当我想从没有虚拟析构函数的具体类派生时。公共(public)继承会邀请客户端通过指向基址的指针进行删除,从而调用未定义的行为。
一个典型的例子是从一个 STL 容器私有(private)派生:
class MyVector : private vector<int>
{
public:
// Using declarations expose the few functions my clients need
// without a load of forwarding functions.
using vector<int>::push_back;
// etc...
};
- 在实现适配器模式时,从 Adapted 类私有(private)继承可以省去转发到封闭实例的麻烦。
- 实现私有(private)接口(interface)。这经常出现在观察者模式中。通常我的 Observer 类,MyClass 说,订阅自己 有一些主题。然后,只有 MyClass 需要做 MyClass -> Observer 的转换。系统的其余部分不需要知道它,因此指示了私有(private)继承。
关于c++ - 什么时候应该使用 C++ 私有(private)继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/656224/