c – 自动指针的优点/缺点

前端之家收集整理的这篇文章主要介绍了c – 自动指针的优点/缺点前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
与普通指针相比,使用自动指针(auto_ptr)有哪些优缺点?我听说它会自动释放内存,但为什么不经常使用?

解决方法

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.

有关在STL算法使用的STL容器中使用时的含义的更多详细信息,请参阅Herb Sutter网站上的this主题.

猜你在找的C&C++相关文章