【Boost】智能指针

来源:互联网 发布:nginx lua 环境搭建 编辑:程序博客网 时间:2024/05/21 10:00

Boost 提供五种智能指针:

 

shared_ptr<T>
 本指针中有一个引用指针记数器,表示类型T的对象是否已经不再使用。shared_ptr 是Boost中提供普通的智能指针,大多数地方都使用shared_ptr。
 
scoped_ptr<T>
 当离开作用域能够自动释放的指针。因为它是不传递所有权的。事实上它明确禁止任何想要这样做的企图!这在你需要确保指针任何时候只有一个拥有者时的任何一种情境下都是非常重要的。
 
intrusive_ptr<T>
 比 shared_ptr 更好的智能指针,但是需要类型 T 提供自己的指针使用引用记数机制。
 
weak_ptr<T>
 一个弱指针,帮助shared_ptr 避免循环引用。
 
shared_array<T>
 和 shared_ptr 类似,用来处理数组的。
 
scoped_array<T>
 和 scoped_ptr 类似,用类处理数组的。


一、scoped_ptr 

优点: 自动释放本地对象和成员变量,对于函数外创建的指针就无能为力

缺点:STL容器里,多个指针操作一个对象的时候需要注意。 

使用scoped_ptr 指针,会增加一个普通指针。

 

二、shared_ptr

引用指针计数器记录有多少个引用指针指向同一个对象,如果最后一个引用指针被销毁的时候,那么就销毁对象本身。

 

待续。。。