【发布时间】:2015-08-25 00:39:59
【问题描述】:
所以,假设我们有 class Parent 和继承自 class Parent 的 class Offspring。据我了解,当我创建一个Offspring 对象时,还会创建一个Parent 对象并与Offspring 对象相关联。问题是,如果我已经创建了一个独立的 Parent 对象,我可以将其用作 Parent 对象,该对象在创建时包含在 Offspring 对象中吗?
即是否可以不在Offspring 对象内创建新的Parent 对象,而使用原始(和独立)代替?只是将原始Parent 对象的数据复制到在Offspring 中创建的对象显然不是我想要的。
【问题讨论】:
-
这只有在
Parent实际上是一个接口时才有意义。然后ParentImpl可以实现接口并拥有状态。然后Offspring可以使用提供的ParentImpl实现Parent接口。 -
您可以尝试让后代对象在其构造函数中获取对父对象的右值引用,并从该右值引用移动构造父对象。
-
问题的存在表明您的问题是组合(特别是依赖注入)比继承更好的设计。它发生了很多......
-
我认为从
Parent派生Offspring完全没有意义。Offspring应该包含一个 指针/引用 指向一个单独的Parent对象。 -
@RemyLebeau:
Offspring没有理由不能同时是Parent。
标签: c++ class object inheritance nested