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 []释放资源

posted @ 2011-07-24 23:38  justin_s  阅读(1591)  评论(0编辑  收藏  举报