1 概述
从C++11开始C++语言越来向现代化语言转变。尤其是智能指针的引入,代码中不会直接使用new/delete了。C++11智能指针有三种分别是:shared_ptr,weak_ptr 和unique_ptr 。
2 类图
3 共享指针(shared_ptr)
接口函数:
- shared_ptr 构造函数
- ~shared_ptr 析构函数
- operator= 赋值运算符重载
- swap 交换两个指针
- reset 重置指针
- get 返回存储的指针
- operator* 操作符重载,返回存储指针指向对象,相当于调用get()
- operator-> ->操作符重载,执行对象成员
- use_count 指针被使用个数
- unique 返回存储指针是否唯一,如果存储指针没有被其它对象共享,则是唯一的。
- operator bool bool操作符重载,判断存储指针是否不为空。
- owner_before 返回是否按照严格的基于弱所有者的顺序将对象放在x之前。
4 弱指针(weak_ptr)
接口函数
- weak_ptr 构造函数
- ~weak_ptr 析构函数
- operator= 赋值运算符重载
- swap 交换两个指针
- reset 重置指针
- use_count 指针被使用个数
- expired 判断指针是否过期
- lock 返回共享指针,如果过期返回为空共享指针
- owner_before 返回是否按照严格的基于弱所有者的顺序将对象放在x之前。
5 唯一指针(和unique_ptr)
接口函数:
- unique_ptr 构造函数
- ~unique_ptr 析构函数
- operator= 赋值运算符重载
- get 返回存储的指针
- release 不该管理存储指针,并返回存储指针
- reset 重置指针
- swap 交换两个指针