C++基础知识(3)智能指针
时间: 2024-02-01 13:10:38 浏览: 22
智能指针是C++中的一种特殊指针,它能够自动管理动态分配的内存资源,避免内存泄漏和悬空指针的问题。C++11引入了三种智能指针:shared_ptr、unique_ptr和weak_ptr。
1. shared_ptr:共享的智能指针。多个shared_ptr可以共享同一个对象,并且会自动计数引用次数。当引用计数为0时,对象会被自动销毁。shared_ptr使用引用计数的方式来管理资源,可以通过make_shared函数进行初始化。
```cpp
#include <memory>
int main() {
std::shared_ptr<int> ptr = std::make_shared<int>(10);
std::shared_ptr<int> ptr2 = ptr; // 共享同一个对象
// ...
return 0;
}
```
2. unique_ptr:独占的智能指针。每个unique_ptr拥有对对象的唯一所有权,不能被复制或共享。当unique_ptr被销毁时,它所拥有的对象也会被销毁。unique_ptr可以通过new关键字进行初始化。
```cpp
#include <memory>
int main() {
std::unique_ptr<int> ptr(new int(10));
// ...
return 0;
}
```
3. weak_ptr:弱引用的智能指针。它不共享指针,不能操作资源,主要用来监视shared_ptr的生命周期。weak_ptr不会增加引用计数,当shared_ptr销毁后,weak_ptr会自动失效。
```cpp
#include <memory>
int main() {
std::shared_ptr<int> ptr = std::make_shared<int>(10);
std::weak_ptr<int> weakPtr = ptr; // 弱引用
// ...
return 0;
}
```