为什么不推荐使用 auto_ptr?

新手上路,请多包涵

我听说 auto_ptr 在 C++11 中被弃用了。这是什么原因?

另外我想知道 auto_ptrshared_ptr 之间的区别。

原文由 brett 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 804
2 个回答

auto_ptr (或最接近的东西)的直接替代品是 unique_ptr 。就“问题”而言,它非常简单: auto_ptr 在分配所有权时转移所有权。 unique_ptr 也转移所有权,但是由于移动语义的编码和右值引用的魔力,它可以更自然地做到这一点。它也更好地“适合”标准库的其余部分(尽管公平地说,其中一些要归功于库的其余部分进行了更改以适应移动语义,而不是总是需要复制)。

名称的更改也是(IMO)一个受欢迎的名称 auto_ptr 并没有真正告诉你它试图自动化的内容,而 unique_ptr 是一个相当合理的(如果简洁) 对所提供内容的描述。

原文由 Jerry Coffin 发布,翻译遵循 CC BY-SA 3.0 许可协议

shared_ptr 可以存放在容器内。 auto_ptr 不能。

BTW unique_ptr is really the direct auto_ptr replacement, it combines the best features of both std::auto_ptr and boost::scoped_ptr .

原文由 Ben Voigt 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题