c++11 std::unique_ptr<>
时间: 2024-11-22 11:45:13 浏览: 5
`std::unique_ptr<>`是C++11引入的一个智能指针模板,用于管理动态分配的对象所有权。它是一种独占所有权的表示,意味着一个`unique_ptr`总是指向某个特定的对象,并且当`unique_ptr`离开其作用域时,它所管理的对象会被自动删除,释放内存,避免了内存泄漏的问题。
`unique_ptr`有以下几个特点:
1. **单一线程安全**:`unique_ptr`内部实现了RAII(Resource Acquisition Is Initialization)原则,确保对象在生命周期结束时被正确销毁。
2. **无复制**:`unique_ptr`不允许复制,如果需要传递一个`unique_ptr`,通常通过移动(move)操作来完成。
3. **无赋值**:同样,`unique_ptr`也不允许赋值操作,目的是防止资源泄露。你可以将一个`unique_ptr`的剩余所有权转移给另一个`unique_ptr`,这被称为“交换”(swap)。
4. **默认构造函数**:如果你不提供初始化参数,`unique_ptr`会构造一个空的,管理的对象为`nullptr`。
以下是`unique_ptr`的基本用法示例:
```cpp
#include <memory>
class MyClass {
public:
// ...
};
int main() {
std::unique_ptr<MyClass> ptr(new MyClass());
// 使用ptr...
// 当这里离开作用域时,MyClass对象会被析构并删除
}
```
阅读全文