正在使用clone()方法a' Good Thing&#39 ;?

时间:2014-07-17 10:33:49

标签: c++ clone copy-constructor

我记得在Java中看到了一些clone(),现在我已经在一些C ++代码中注意到了它。我也在SX.com上注意到它们:

Copying a Polymorphic object in C++

这是一个好主意'有克隆方法?或者复制ctors是否足够?

2 个答案:

答案 0 :(得分:2)

  

拥有克隆方法是一个“好主意”吗?或者复制ctors是否足够?

复制构造函数只能复制他们知道的数据成员 - 这会排除他们可能嵌入的任何派生对象中的数据.I.e。如果使用class X的复制构造函数来复制X*X&的对象地址,但实际的运行时数据对象是带有其他数据成员的派生类型,则会出现问题。< / p>

virtual clone方法是一种合适的解决方案,让派生类指定用于复制该类型对象的代码。

如果你仍然无法清楚地看到好处,你应该阅读O.O.一般的设计和多态性,那么对此的需求应该开始变得清晰。

答案 1 :(得分:0)

克隆的原因是创建对象的精确副本。因此,在最坏的情况下,您将使用两倍的内存量。因为字符串经常被实习并且不会被克隆,因此您可能需要将其强制转换。虽然由克隆方法/拷贝构造函数的实现者来实现它。