gpt4 book ai didi

c++ - 放弃 auto_ptr

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:57 26 4
gpt4 key购买 nike

偶尔,对于转瞬即逝的时刻,我认为 auto_ptr 很酷。但大多数时候,我认识到有更简单的技术可以让它变得无关紧要。例如,如果我想自动释放一个对象,即使抛出异常,我也可以新建该对象并分配给一个 auto_ptr。很酷!但我可以更轻松地将我的对象创建为局部变量,并让堆栈来处理它(呃!)。

因此,当我找到google C++ coding standards时,我并没有太惊讶。禁止使用 auto_ptr。 Google 声明应该改用 scoped_ptr(如果需要智能指针)。

我想知道是否有人,与我的经验相反,可以给出一个或多个 auto_ptr 何时是最好或最简单使用的可靠理由。如果不是,那么我想我自己会禁止使用它(在谷歌的领导下)。

更新:对于那些表示担忧的人,不,我没有采用谷歌标准。例如,根据谷歌的建议,我同意应该激活异常处理。我也喜欢使用预处理器宏,例如 printable enum我做了。让我印象深刻的只是 auto_ptr 主题。

update2:原来我的回答来自下面的两个回复者,还有一个 note from Wikipedia .首先,Herb Sutter 确实展示了一个有效的用途(源汇成语和生命周期相关的对象组合)。其次,有些商店不提供或禁止使用TR1和boost,只允许使用C++03。第三,根据维基百科,C++0x 规范正在弃用 auto_ptr 并将其替换为 unique_ptr。所以我的答案是:如果我可以使用 unique_ptr(在考虑的所有平台上),否则在 Sutter 描述的情况下使用 auto_ptr。

最佳答案

当您需要作用域指针或唯一指针并且您在严格的 C++03 环境中工作而无法访问 tr1 实现或提升时,这是最简单的使用方法。

关于c++ - 放弃 auto_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4802310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com