shared_ptr & shared_array
最像指针, smart_ptr库中最有价值、最重要的组成部分,也是最有用的。
包装了new操作在堆上分配的动态对象 ,实现的是引用计数型的指针。
可以安全的放到标准容器中。
重载了* 和 ->
用get()得到原始指针
reset将引用数减1,至0时删除
支持比较运算符,基于内部指针
基于虚函数的多态代码时,类型转换使用 static_pointer_cast<T>等,返回类型为share_ptr,可被正确管理
几乎可以消灭new / delete
基本的线程安全,可被多个线程同时读取,而其它结果未定义
过多显示的new -- 使用工厂模式, make_shared<T>(Arg)
应用于标准容器:
将容器作为shared_ptr管理的对象
将shared_ptr作为容器的元素
应用于桥接模式(PIMPL)
应用于工厂模式
定制删除器
、
shared_array
接受的指针必须是new []的结果
提供[]重载
没有* –>重载
使用delete []释放资源