c++ shared_ptr赋值
时间: 2023-09-07 16:16:52 浏览: 109
在 C++ 中,可以使用 `std::shared_ptr` 类模板来管理动态分配的资源,并进行安全的共享所有权。要将一个 `std::shared_ptr` 赋值给另一个 `std::shared_ptr`,可以使用 `=` 运算符或者 `std::shared_ptr` 的 `reset()` 成员函数。
下面是一些示例代码,展示了如何进行 `std::shared_ptr` 的赋值操作:
```cpp
#include <iostream>
#include <memory>
int main() {
// 创建一个动态分配的整数对象
std::shared_ptr<int> ptr1 = std::make_shared<int>(42);
// 使用 = 运算符进行赋值
std::shared_ptr<int> ptr2 = ptr1;
std::cout << "ptr1: " << *ptr1 << ", ptr2: " << *ptr2 << std::endl;
// 使用 reset() 成员函数进行赋值
std::shared_ptr<int> ptr3; ptr3.reset(new int(24));
std::cout << "ptr3: " << *ptr3 << std::endl;
return 0;
}
```
在上面的代码中,我们首先创建了一个 `std::shared_ptr<int>` 对象 `ptr1`,并将其初始化为指向一个整数对象。然后,我们使用 `=` 运算符将 `ptr1` 赋值给另一个 `std::shared_ptr<int>` 对象 `ptr2`。最后,我们使用 `reset()` 成员函数将一个新的动态分配的整数对象赋值给另一个 `std::shared_ptr<int>` 对象 `ptr3`。
需要注意的是,当一个 `std::shared_ptr` 被赋值给另一个 `std::shared_ptr` 时,它们将共享同一个资源。当最后一个拥有者离开作用域时,资源将会被自动释放。此外,`std::shared_ptr` 还提供了其他功能,例如自定义删除器、获取引用计数等。
阅读全文