boost智能指针:
scoped_ptr <boost/scoped_ptr.hpp>简单的单一对象的唯一所有权。不可拷贝。//一旦离开作用域所指对象立即释放
scoped_array <boost/scoped_array.hpp>简单的数组的唯一所有权。不可拷贝。//管理数组
shared_ptr <boost/shared_ptr.hpp>在多个指针间共享的对象所有权。//指向一个对象该对象的引用计数加1,当引用计数将为0时所指对象立即被销毁,用于管理对象生命周期。可复制。
shared_array <boost/shared_array.hpp>在多个指针间共享的数组所有权。//管理数组
weak_ptr <boost/weak_ptr.hpp>一个属于 shared_ptr 的对象的无所有权的观察者。//弱引用,不增加对象的引用计数,但可以提升为shared_ptr因此可以通过提升判断对象是否还存活,若提升失败则所指对象不存在。提升操作是线程安全的。可复制。
intrusive_ptr <boost/intrusive_ptr.hpp>带有一个侵入式引用计数的对象的共享所有权。
这些只能指针指向被管理的对象A,且这些指针本身就是对象(带有计数并指向对象A的指针对象),这些指针都是值语义即其拷贝操作对原来无关,要么是栈对象、其它对象数据成员、容器元素。
使用方法:
shared_ptr<T> one(new T);//声明并初始化一个指向T类型对象的智能指针,,值语义:share_ptr<T> two=one。
几个比较重要的成员函数:
*one成为所指对象的引用即可用