unique pointer
时间: 2023-10-18 12:04:26 浏览: 39
Unique pointer是C++中的智能指针,用于管理动态分配的对象。它是在C++11中引入的,位于头文件<memory>中。与传统的裸指针相比,unique pointer具有独特的所有权语义,只能有一个unique pointer指向同一对象。
Unique pointer提供了自动释放内存的功能,在unique pointer超出其作用域或者被重新赋值时,会自动调用delete释放所管理的对象。这种自动释放内存的机制可以有效地避免内存泄漏和悬空指针的问题。
使用unique pointer时,可以使用std::make_unique函数来创建一个unique pointer,也可以使用new关键字直接创建。例如:
```cpp
std::unique_ptr<int> ptr1 = std::make_unique<int>(42);
std::unique_ptr<int> ptr2(new int(42));
```
可以通过get()函数获取unique pointer中所管理的裸指针,通过reset()函数重新赋值或释放unique pointer中的对象。
```cpp
int* rawPtr = ptr1.get(); // 获取裸指针
ptr1.reset(); // 释放ptr1中的对象
```
需要注意的是,unique pointer不能进行复制操作,但可以进行移动操作。通过std::move()函数可以将unique pointer的所有权转移给另一个unique pointer。
```cpp
std::unique_ptr<int> ptr3 = std::move(ptr1); // 转移ptr1的所有权给ptr3
```
通过使用unique pointer,可以有效地管理动态分配的对象,避免内存泄漏和资源管理的问题。