首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >auto_ptr是否已弃用?

auto_ptr是否已弃用?
EN

Stack Overflow用户
提问于 2010-03-09 03:32:41
回答 4查看 44.5K关注 0票数 85
  1. 是否会在即将到来的auto_ptr中被弃用C++ unique_ptr将用于所有权转移而不是shared_ptr?
  2. 如果unique_ptr不在标准中,那么我是否需要使用shared_ptr来代替?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-03-09 03:37:30

更新:此答案是在2010年编写的,正如预期的那样,std::auto_ptr已被弃用。这个建议是完全有效的。

在C++0x中,为了支持std::unique_ptrstd::auto_ptr将被弃用。智能指针的选择将取决于您的用例和需求,具有移动语义的std::unique_ptr可以在容器内使用(使用移动语义),当所有权共享时使用std::shared_ptr

您应该尝试使用最适合这种情况的智能指针,选择正确的指针类型可以让其他程序员深入了解您的设计。

票数 85
EN

Stack Overflow用户

发布于 2010-03-09 03:41:51

是的,从今天起,C++0x中将不再推荐使用auto_ptr,您应该使用unique_ptr。来自最新的标准草案(n3035),D.9节

类模板auto_ptr已弃用。注意:类模板unique_ptr (20.9.10)提供了更好的解决方案。-end笔记

在标准被批准之前,委员会总是有可能修改这个决定,尽管我觉得这对这个决定来说是不太可能的。

票数 22
EN

Stack Overflow用户

发布于 2014-11-25 04:30:13

不仅auto_ptr将被弃用in C++11 (D.10, page 1228),它还将被删除in a future version of C++

采用了N4190,并且实际上从C++标准库中删除了几个过时的东西,包括 bind1st/bind2ndptr_fun/mem_fun/mem_fun_refrandom_shuffle等等。这些现在都从草案C++17标准库中删除了,并且不会成为未来可移植C++的一部分。

另一个关于它的文档:Programming Language C++, Library Evolution Working Group - Document N4190,如果你想了解更多信息的话。

通过使用unique_ptr,您可以使用auto_ptr自动转换任何代码:

任何使用auto_ptr的代码都可以机械地转换为使用unique_ptr,并在“复制”auto_ptr时插入move()

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2404115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档