如何复制boost::shared_ptr<T>
后面的完整对象:是否有memcopy选项(只是创建内存克隆),或者我们将创建复制构造函数?
答案 0 :(得分:1)
您需要一个复制构造函数或operator=
来执行深层复制。
boost::shared_ptr
无法知道您的对象的结构为您执行此操作。也不能进行“内存克隆”操作。
当然,这仅适用于需要明确定义的复制构造函数/ operator=
的对象,而“普通”复制构造函数需要浅层复制。
答案 1 :(得分:1)
如果您知道对象的确切类型,那么您应该使用复制构造函数或复制赋值运算符。
如果对象是继承层次结构中的类的实例,并且您不知道对象的确切类型,那么您应该使用虚拟克隆函数。
答案 2 :(得分:0)
您应该创建一个复制构造函数并编写如下内容:
ptr.reset(new T);
*ptr = *(otherObject.ptr);
为了深度复制指针。