C++ 入门进阶之一
大纲
- C++ 入门进阶之一、C++ 入门进阶之二、C++ 入门进阶之三
- C++ 入门进阶之四、C++ 入门进阶之五、C++ 入门进阶之六
- C++ 入门进阶之七、C++ 入门进阶之八、C++ 入门进阶之九
- C++ 入门进阶之十、C++ 入门进阶之十一
智能指针
智能指针的概念介绍
在 C++ 中,智能指针的类型有以下几种:
- (1) 带引用计数的智能指针:
share_ptr - (2) 不带引用计数的智能指针:
unique_ptr、scoped_ptr、auto_ptr - (3) 特殊的智能指针:
weak_ptr(不增加引用计数,但可用于观察shared_ptr管理的资源)
| 智能指针 | 所有权 | 带引用计数 | 适用场景 |
|---|---|---|---|
unique_ptr | 独占 | 否 | 资源独占,生命周期明确 |
shared_ptr | 共享 | 是 | 资源共享,生命周期不固定 |
scoped_ptr | 独占 | 否 | 生命周期受限于作用域,适用于简单的场景,避免资源泄漏 |
weak_ptr | 观察 shared_ptr | 否 | 避免 shared_ptr 循环引用 |
auto_ptr | 独占(拷贝时转移) | 否 | ⚠ 已废弃,建议改用 unique_ptr |
unique_ptr 对象的简介
unique_ptr 是 C++ 11 提供的用于防止内存泄漏的智能指针中的一种实现,独享被管理对象指针所有权的智能指针。unique_ptr 对象包装了一个原始指针,并负责其生命周期。当该对象被销毁时,会在其析构函数中删除关联的原始指针。unique_ptr 实现了 -> 和 * 运算符的重载,因此它可以像普通指针一样使用。

