【发布时间】:2023-04-05 17:47:02
【问题描述】:
公共继承很容易。
A : public B 表示每个 A 都是 B。在大多数编程语言中,例如 vb.net 和 Objective-c,这是唯一的继承类型。
私有继承也简单但没有意义
A :私有 B 表示 A 由 B 实现。但是,这是没有意义的,因为这意味着 A 应该包含 B。所有权意味着更少的耦合,没有缺点。
那么我们就有了受保护的继承。
谁能给我解释一下这到底是为了什么?有人说这是一种“关系”。我还不是很清楚。
是否有人有一些示例案例,其中人们以良好的模式(和良心)将受保护的继承用于实际生产用途?
【问题讨论】:
-
我可能是错的,但我想我读过一本黄金 C++ 书籍(不记得具体是哪一本),
protected继承是(几乎?)废话和(几乎?)从未使用过。就像“保留以备将来使用”一样。但是,再一次,我可能会撒谎:) -
this answer by Johannes Schaub 实际上找到了一个用例。它仍然称其为“很少有用”。
-
或者试试this one
-
而且私有继承也几乎没用,因为它应该是所有权。
-
@JimThio 除非所有权不起作用。 (Mixins 就是一个很好的例子。)更一般地说,当您想要公开基类的部分(但不是全部)接口时,私有继承也是一种实用的解决方案。
using比转发函数简单很多。
标签: c++ inheritance protected