如何复制后面的完整对象boost::shared_ptr<T>
:是否有 memcopy 选项(只创建内存克隆),或者我们将创建复制构造函数?
问问题
5506 次
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 回答