将深度复制构造函数添加到 std::unique_ptr

2024-02-08

我想储存一些std::unique_ptr<my_type> into a std::vector. Since 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.

复制器的目的是进行深度复制。您不需要 C++ 中的克隆方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将深度复制构造函数添加到 std::unique_ptr 的相关文章

随机推荐