std::unique_ptr
时间: 2023-08-28 14:07:23 浏览: 50
std::unique_ptr是C++中的一个智能指针,用于管理动态分配的资源,并确保资源的释放。使用std::make_unique()函数可以创建std::unique_ptr对象并分配内存。例如,可以使用以下代码创建一个指向整数的std::unique_ptr对象:
```cpp
#include <memory>
std::unique_ptr<int> ptr = std::make_unique<int>(42);
```
<em>1</em><em>2</em><em>3</em>
#### 引用[.reference_title]
- *1* *2* *3* [C++ std::unique_ptr 详解](https://blog.csdn.net/qq_44859843/article/details/131460426)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item]
[ .reference_list ]
相关问题
std::unique_ptr reset
std::unique_ptr的reset函数用于重新设置unique_ptr所拥有的资源。当调用reset时,unique_ptr会释放当前拥有的资源(如果有的话),然后接管新的资源。
例如,假设我们有一个unique_ptr指向一个对象:
```cpp
std::unique_ptr<int> ptr(new int(5));
```
我们可以使用reset函数来重新设置指针的值:
```cpp
ptr.reset(new int(10));
```
在上述代码中,ptr首先释放原来的资源(值为5的int对象),然后接管新的资源(值为10的int对象)。
需要注意的是,调用reset时,unique_ptr会自动删除先前的资源,因此不需要手动删除。此外,reset还可以用于将unique_ptr重置为nullptr,不拥有任何资源:
```cpp
ptr.reset();
```
在上述代码中,ptr会释放它之前拥有的资源,并将其重置为nullptr。
std::unique_ptr构造
std::unique_ptr构造函数有多种常用的方式。其中一种是通过直接使用指针初始化,例如:std::unique_ptr<int> p(new int(5)); 这样会创建一个指向int类型的智能指针p,它指向一个值为5的int对象。另一种方式是使用std::make_unique函数,例如:auto q = std::make_unique<int>(10); 这样会创建一个指向int类型的智能指针q,它指向一个值为10的int对象。还有一种方式是使用std::move函数转移指针的所有权,例如:std::unique_ptr<int> r = std::move(p); 这样会将指针p的所有权转移给指针r,使得r指向原来p所指的对象。这样做后,p指针将变为无效的。总之,std::unique_ptr提供了多种灵活的构造方式,以适应不同的使用场景。<span class="em">1</span><span class="em">2</span><span class="em">3</span>