unique_ptr
作用:利用c++构造析构 保证在异常情况下也能调用delete防止内存泄漏
唯一性 ,不能拥有=赋值,与拷贝构造
不允许unique_ptr (const unique_ptr&)
允许右值引用 unique_ptr (unique_ptr&&)
void transfer(unique_ptr<A> b)
{
}
void print(unique_ptr<A>&b)
{
}
class A
{
//....
};
void test()
{
unique_ptr<A> a(new A());
auto p = a.get();
printf(a);
p = a.release();//将a释放,同时把值传给普通指针p
delete p;
unique_ptr<A> obj;
obj.reset();释放指针
obj.reset(new A());//释放原来的指针,管理新的指针
transfer(move(a));//通过右值引用来拷贝unique——ptr指针,此时a本身已经是空指针,通过move管理权已经跑到了b的形参
obj.reset(new A());
shared_ptr<A> shareptr(move(obj));//将obj管理的资源给shareptr管理了,本身为空
}