繁体   English   中英

如何深度复制boost :: shared_ptr后面的完整对象 <T> 进入shared_ptr指向新位置?

[英]How to deep copy full object behind boost::shared_ptr<T> into shared_ptr pointing to new location?

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

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

boost::shared_ptr无法知道你的对象的结构为你做这件事。 也不能进行“内存克隆”操作。

当然,这仅适用于需要明确定义的复制构造函数/ operator=对象,而“平凡”的对象需要进行浅层复制。

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

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

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

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

为了深度复制指针。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM