是否可以在C ++中实现串联继承或至少是mixins?
感觉用C ++不可能完成,但我无法证明。
谢谢。
答案 0 :(得分:1)
根据this article:
串联继承是组合属性的过程 一个或多个源对象到新的目标对象中。
这是公共继承在C ++中工作的基本方式。由于多重继承,您甚至可以合并多个基类。
但是可能会有一些限制(例如,必须解决不同源之间的名称冲突,具体取决于用例,您可能需要虚拟函数,并且可能需要显式创建组合的构造函数)。
如果它是关于对象而不是类的,那么情况就不一样了。因为C ++是一种强类型语言,所以您不能相互克隆和组合随机类型的对象。
但首先,让我们纠正误导性措辞。因为继承是针对类的,所以它实际上并不是关于串联继承的。这是“连接原型”,因为您是通过接管现有对象的值和行为来创建新对象的。
要在C ++中实现某种“连接原型”,您需要根据组成原理,使用一组定义良好的“可连接”(即可组合)基类进行设计。这可以通过将prototype design pattern与entity-component-system体系结构一起使用来实现。
您当前正在寻找这种构造,可能是因为您在动态类型化语言中大量使用了它。
因此请记住popular quote(马克·吐温?马斯洛?):
如果您的手是锤子,那么每个问题都会像钉子一样
所以问题是您真正要寻找的是什么,打算解决什么问题。恕我直言,不能排除其他习惯用法可能更适合C ++世界实现同一目标。