正确使用std :: shared_ptr和std :: auto_ptr

Ash*_*okS 4 smart-pointers

我知道以下智能类型的基本定义以及如何使用它们.但是,我不确定在哪些地方/情况:

  • std::auto_ptr应该优先考虑std::shared_ptr.
  • std::shared_ptr应该优先考虑std::auto_ptr.

  • std::auto_ptr :用于确保当控件离开块时,它指向的对象会自动销毁.

  • std::shared_ptr :在动态分配的对象周围包装引用计数的智能指针.

Seb*_*ach 5

auto_ptr应该永远不会被使用,因为它已被弃用作为C++ 11 1.

使用

  1. std::shared_ptr如果要分享所有权
  2. std::unique_ptr如果只有一个唯一的对象视图,即只有一个所有者

auto_ptr 也不能用于标准容器,因为它不可复制.


1 :: D.10 auto_ptr"类模板auto_ptr已弃用.[注意:类模板unique_ptr(20.7.1)提供了更好的解决方案.-end note"