c++ - 什么时候应该使用 C++ 私有(private)继承?

标签 c++ oop

与 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/

相关文章:

c++ - 为什么输入后得到随机数?

c++ - 我可以使用 std::align 将内存对齐到任意值 2 吗?

javascript - 如何从 JavaScript 中同一对象中的另一个方法调用方法?

c# - 游戏中的对象如何交流

php - fatal error : Uncaught Error: Call to a member function query() on null

c++ - 组织客户端-服务器游戏中的代码

java - 构造函数和类之间的关系如何?

c++ - 返回类型 "BST&"是什么意思?

通过类型别名实现 C++ 不变性

c++ - Opencv:向后扭曲