unique_ptr使用举例
时间: 2023-08-14 09:05:37 浏览: 104
当使用`unique_ptr`时,可以通过以下步骤来使用它:
1. 包含头文件:首先,你需要包含`<memory>`头文件,因为`unique_ptr`是位于`std`命名空间中的。
```cpp
#include <memory>
```
2. 创建`unique_ptr`:使用`std::unique_ptr`模板来创建一个指向特定类型的动态分配对象的`unique_ptr`。
```cpp
std::unique_ptr<int> ptr(new int);
```
上述代码创建了一个指向`int`类型对象的`unique_ptr`,并通过`new int`进行动态分配。
3. 访问和操作对象:你可以通过解引用操作符(`*`)来访问和操作通过`unique_ptr`管理的对象。
```cpp
*ptr = 42;
std::cout << *ptr << std::endl;
```
上述代码将42赋值给所管理的对象,并将其打印出来。
4. 移交所有权:当需要将所有权从一个`unique_ptr`转移到另一个时,可以使用移动语义来实现。通过使用`std::move`函数将一个`unique_ptr`转移到另一个。
```cpp
std::unique_ptr<int> ptr1(new int);
std::unique_ptr<int> ptr2 = std::move(ptr1);
```
上述代码将`ptr1`的所有权转移到了`ptr2`,此后`ptr1`将变为空指针。
5. 释放内存:当不再需要通过`unique_ptr`管理的对象时,它会自动释放所分配的内存。你不需要显式地调用`delete`来释放内存。
```cpp
std::unique_ptr<int> ptr(new int);
ptr.reset(); // 释放内存
```
上述代码通过调用`reset`函数将`unique_ptr`重设为空指针,从而释放了所分配的内存。
`unique_ptr`还提供了其他功能,如自定义删除器、数组管理等,可以根据需要进行使用。需要注意的是,`unique_ptr`是独占所有权的,同一时间只能有一个`unique_ptr`拥有对对象的所有权。这使得它适用于管理单个资源的情况。
阅读全文