c++ - 将深拷贝构造函数添加到 std::unique_ptr<my_type>

标签 c++ c++11 copy-constructor deep-copy unique-ptr

我想存储一些 std::unique_ptr<my_type>进入 std::vector .自 my_type提供一个 clone()制作 my_type * 的深拷贝非常简单.重点是如何扩展std::unique_ptr在添加复制构造函数和赋值运算符的同时保留其所有功能。遗产?模板特化?你能提供一个代码片段吗?

最佳答案

std::unique_ptr 的目的是使其唯一,即它不应该是可复制的。这就是为什么他们将其设为只能移动的原因。它用于表示唯一所有权。

如果你想做一个深拷贝然后让你的拷贝构造函数完成它的工作,这就是它的用途。

std::unique_ptr<my_type> ptr1{new my_type{}};      // Lets say you have this.

std::unique_ptr<my_type> ptr2{new my_type{*ptr1}}; // Make deep copy using copy ctor.

copy ctor 的目的是进行深拷贝。您不需要 C++ 中的克隆方法。

关于c++ - 将深拷贝构造函数添加到 std::unique_ptr<my_type>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23535719/

相关文章:

c++ - 为什么 const QString& param 返回指向数据的错误 const char* 指针

c++ - 丢失的一元 std::copy 的最佳实现

c++ - 临时绑定(bind)到引用是否需要 C++ 中的复制构造函数?

c++ - 未读行中的最后一个字

c++ 返回不同的结果

c++ - unique_ptr 可以在不泄漏内存的情况下与负索引一起使用吗?

c++11 - 将 OpenMP 与 C++11 基于范围的 for 循环结合使用?

c++ - 如何在 C++ 中同时使用默认和自定义复制构造函数?

c++ - 如何使用向后 cpp 在 ARM 上获取堆栈跟踪

c++ - 编译时运算符