我记得在Java中看到了一些clone(),现在我已经在一些C ++代码中注意到了它。我也在SX.com上注意到它们:
Copying a Polymorphic object in C++
这是一个好主意'有克隆方法?或者复制ctors是否足够?
答案 0 :(得分:2)
拥有克隆方法是一个“好主意”吗?或者复制ctors是否足够?
复制构造函数只能复制他们知道的数据成员 - 这会排除他们可能嵌入的任何派生对象中的数据.I.e。如果使用class X
的复制构造函数来复制X*
或X&
的对象地址,但实际的运行时数据对象是带有其他数据成员的派生类型,则会出现问题。< / p>
virtual clone
方法是一种合适的解决方案,让派生类指定用于复制该类型对象的代码。
如果你仍然无法清楚地看到好处,你应该阅读O.O.一般的设计和多态性,那么对此的需求应该开始变得清晰。
答案 1 :(得分:0)
克隆的原因是创建对象的精确副本。因此,在最坏的情况下,您将使用两倍的内存量。因为字符串经常被实习并且不会被克隆,因此您可能需要将其强制转换。虽然由克隆方法/拷贝构造函数的实现者来实现它。