在 C++ 中实现串联继承

Implement concatenative inheritance in C++

是否可以在 C++ 中实现连接继承或至少混合?

感觉用C++做是不可能的,但是我无法证明。

谢谢。

根据this article

Concatenative inheritance is the process of combining the properties of one or more source objects into a new destination object.

我们是在谈论 class 继承吗?

这是 C++ 中 public 继承的基本方式。由于多重继承,您甚至可以组合多个基础 classes。

但是可能会有一些限制(例如,必须解决不同来源之间的名称冲突,具体取决于您可能需要虚函数的用例,并且可能需要显式创建组合构造函数)。

或者从实例化对象继承是什么意思?

如果它真的是关于对象而不是 classes,那么情况就不同了。您不能将随机类型的对象相互克隆和组合,因为 C++ 是一种强类型语言。

但首先,让我们纠正误导性的措辞。这与串联继承无关,因为继承是针对 classes 的。而是 "concatenative prototyping",因为您通过接管现有对象的值和行为来创建新对象。

要在C++中实现某种"concatenative prototyping",你需要设计它,基于组合的原则,使用一组定义良好的"concatenable"(即可组合)基classes。这可以通过使用 prototype design pattern together with the entity-component-system 架构来实现。

目的是什么

您目前正在寻找这种构造,可能是因为您在动态类型语言中大量使用了它。

所以请记住 popular quote(马克吐温?马斯洛?):

If you have a hammer in your hand, every problem looks like nails

所以问题是你真正在寻找什么以及你打算解决什么问题。恕我直言,不能排除其他习语可能更适合 C++ 世界来实现相同的 objective。