std::shared_ptr 深拷贝
时间: 2023-08-28 22:15:51 浏览: 88
std::shared_ptr 是 C++ 中的智能指针,它用于管理动态分配的对象的生命周期。它使用引用计数的方式来追踪有多少个 shared_ptr 共享同一个对象。
在使用 std::shared_ptr 进行赋值操作时,它会增加被赋值对象的引用计数。当引用计数为0时,对象会被销毁。
深拷贝是指创建一个新的对象,并将原始对象的所有成员变量的值复制到新对象中。对于 std::shared_ptr 来说,深拷贝会创建一个新的 shared_ptr 对象,但是它们会共享同一个对象。
例如:
```cpp
std::shared_ptr<int> original(new int(10));
std::shared_ptr<int> copy = original;
```
在上面的代码中,`original` 和 `copy` 共享同一个 int 对象。无论是对 `original` 还是 `copy` 进行操作,它们都会影响到同一个对象。
如果你想要进行深拷贝,即创建一个新的对象并复制原始对象的值,你可以使用 std::make_shared 函数来创建一个新的 shared_ptr 对象:
```cpp
std::shared_ptr<int> original(new int(10));
std::shared_ptr<int> deepCopy = std::make_shared<int>(*original);
```
在上面的代码中,`deepCopy` 是一个新的 shared_ptr 对象,它拥有一个新的 int 对象,该对象的值与 `original` 相同。这样,`deepCopy` 和 `original` 就不再共享同一个对象了。