C++ 智能指针
一、智能指针概述
-
核心概念
- 本质是重载了
->
和*
操作符的类 - 自动管理动态分配的内存资源
- 保证异常安全,避免内存泄漏
- 本质是重载了
-
C++11 智能指针类型
类型 特点 头文件 unique_ptr
独占所有权,不可复制 <memory>
shared_ptr
共享所有权,引用计数机制 <memory>
weak_ptr
弱引用,解决循环引用问题 <memory>
-
与传统指针对比
cpp
// 传统指针(需手动管理) int* p = new int(10); delete p; // 智能指针(自动管理) std::unique_ptr<int> up(new int(10));
二、unique_ptr
-
核心特性
- 独占所有权,不可复制
- 轻量级,无额外开销
- 支持移动语义(
std::move
)
-
基本操作
cpp
// 创建 std::unique_ptr<int> up1(new int(42)); auto up2 = std::make_unique<int>