假设我们有以下类层次结构:
class Base { ... }; class Derived1 : public Base { ... }; class Derived2 : public Base { ... };
给定一个Base*
可能点到任何一个Derived1
或Derived2
反对我怎样才能使给定的,它的具体类型的实际对象的副本是未知的.我想过定义复制构造函数,但我不认为在不知道所涉及的实际类型的情况下这是可能的.我能想到的唯一解决方案是clone()
在层次结构中为每种类型定义一个方法.任何人都可以想到更优雅的东西吗?
不幸的是,虚拟克隆/复制模式是您唯一真正的选择.
这有各种变化,但基本上它们都归结为为每个可以返回新副本的类型编写函数.