是否有可能在 C++ 中实现连接继承或至少混合?
感觉用C++做是不可能的,但我无法证明。
谢谢。
最佳答案
根据 this article :
Concatenative inheritance is the process of combining the properties of one or more source objects into a new destination object.
我们是在谈论类继承吗?
这是公共(public)继承在 C++ 中工作的基本方式。由于多重继承,您甚至可以组合多个基类。
但是可能会有一些限制(例如,必须解决不同来源之间的名称冲突,这取决于您可能需要虚函数的用例,并且可能需要显式创建组合构造函数)。
或者从实例化对象继承意味着什么?
如果它真的是关于对象而不是类,那么情况就不同了。您不能将随机类型的对象相互克隆和组合,因为 C++ 是一种强类型语言。
但首先,让我们纠正误导性的措辞。这与串联继承无关,因为继承是针对类的。它更像是“串联原型(prototype)”,因为您通过接管现有对象的值和行为来创建新对象。
要在 C++ 中实现某种“串联原型(prototype)”,您需要根据组合原则使用一组定义明确的“可串联”(即可组合)基类来设计它。这可以通过使用 prototype design pattern 来实现连同 entity-component-system建筑学。
目的是什么
您目前正在寻找这种构造,可能是因为您在动态类型语言中大量使用它。
所以请记住 popular quote (马克吐温?马斯洛?):
If you have a hammer in your hand, every problem looks like nails
所以问题是你真正在寻找什么以及你打算解决什么问题。恕我直言,不能排除其他习语可能更适合 C++ 世界来实现相同的目标。
关于c++ - 在 C++ 中实现串联继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54226119/