class A{
public:
A(int a):m_a(a){}
~A(){}
int m_a;
}
#include<memory>
1、auto_ptr
auto_ptr<A> a1(new A(100))
auto_ptr<A> a2(a1) 或 auto_ptr<A> a2=a1 之后 a1 不再存在
2、scoped_ptr
#include<boost/scoped_ptr.hpp>
using namespace boost
scoped_ptr <A> a2(a1) 或 scoped_ptr <A> a2=a1 或保存 防止a1消失
3、scoped_array 智能数组指针
#include<boost/scoped_array.hpp>
scoped_array<A> a1(new A[5])
for(int i=0;i<5;i++){
a1[i].m_a = i;
}
cout << a1[2].m_a <<endl;
4、shared_ptr 共享所有权的智能指针
#include<boost/make_shared.hpp>
boost::shared_ptr<A> p1(new int(5))
p1.unique() 返回0或1 是否唯一
p1.use_count() 获取共享个数
5、weak_ptr 弱引用智能指针
shared_ptr <A> p1 = new A(int(3))
weak_ptr<A> p2 = p1;
p2.expired() 返回0 或1 是否过期,是否还有引用
p1.unset() 释放p1
shared_ptr <A> p3 = p2.lock()