5

如何复制后面的完整对象boost::shared_ptr<T>:是否有 memcopy 选项(只创建内存克隆),或者我们将创建复制构造函数?

4

3 回答 3

1

您需要一个复制构造函数或一个operator=将执行深层复制的构造函数。

boost::shared_ptr无法知道您的对象的结构来为您执行此操作。“内存克隆”操作也不能。

当然,这仅适用于需要明确定义的复制构造函数的对象 /operator=并且“琐碎”的对象会进行浅拷贝。

于 2013-03-21T11:26:24.377 回答
1

如果您知道对象的确切类型,那么您应该使用复制构造函数或复制赋值运算符。

如果对象是继承层次结构中的类的实例,并且您不知道对象的确切类型,那么您应该使用虚拟克隆函数。

于 2013-03-21T11:29:27.930 回答
0

您应该创建一个复制构造函数并编写如下内容:

ptr.reset(new T);
*ptr  = *(otherObject.ptr);

为了深拷贝指针。

于 2013-03-21T11:25:55.237 回答