解决方法
std :: auto_ptr的主要缺点是它具有所有权转移语义.这使得无法在STL容器中存储std :: auto_ptr,因为容器在存储或获取元素时使用复制构造函数.
另外,我注意到关于std :: auto_ptr的另一个重要方面是它们不能用于使用PIMPL成语.这是因为,它们需要完整定义包装类的析构函数.有关更详细的讨论,请参见c.l.c .m上的this线程.
更新:转让所有权
class Test {}; std::auto_ptr<Test> ap_test_1(new Test); std::auto_ptr<Test> ap_test_2(new Test); ap_test_2 = ap_test_1; // here ap_test_1's ownership is transferred i.e. ap_test_2 is the // new owner and ap_test_1 is NULL.