我听说 auto_ptr
在 C++11 中被弃用了。这是什么原因?
另外我想知道 auto_ptr
和 shared_ptr
之间的区别。
原文由 brett 发布,翻译遵循 CC BY-SA 4.0 许可协议
我听说 auto_ptr
在 C++11 中被弃用了。这是什么原因?
另外我想知道 auto_ptr
和 shared_ptr
之间的区别。
原文由 brett 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
auto_ptr
(或最接近的东西)的直接替代品是unique_ptr
。就“问题”而言,它非常简单:auto_ptr
在分配所有权时转移所有权。unique_ptr
也转移所有权,但是由于移动语义的编码和右值引用的魔力,它可以更自然地做到这一点。它也更好地“适合”标准库的其余部分(尽管公平地说,其中一些要归功于库的其余部分进行了更改以适应移动语义,而不是总是需要复制)。名称的更改也是(IMO)一个受欢迎的名称
auto_ptr
并没有真正告诉你它试图自动化的内容,而unique_ptr
是一个相当合理的(如果简洁) 对所提供内容的描述。