1 X* f() 2 { 3 X* p = new X; 4 // 做一些事情,可能会抛出某个异常 5 return p; 6 }
1 X* f() 2 { 3 unique_ptr<X> p(new X); 4 // 做一些事情,可能会抛出异常 5 return p.release(); 6 }
1 unique_ptr<X> f() 2 { 3 unique_ptr<X> p(new X); 4 // 做一些事情,可能会抛出异常 5 return p; 6 }
1 void g() 2 { 3 unique_ptr<X> q = f(); // 使用移动构造函数(move constructor) 4 q->DoSomething(); // 使用q 5 X x = *q; // 复制指针q所指向的对象 6 } // 在函数退出的时候,q以及它所指向的对象都被删除释放
C++智能指针--unique_ptr,布布扣,bubuko.com
原文地址:http://blog.csdn.net/yusiguyuan/article/details/37101757