【问题标题】:Is it safe to return vector<auto_ptr<T>>? [duplicate]返回 vector<auto_ptr<T>> 是否安全? [复制]
【发布时间】:2012-10-01 21:15:06
【问题描述】:

可能重复:
Why is it wrong to use std::auto_ptr<> with standard containers?

我有一个函数可以在指针中返回一些对象,所以我使用:

vector <auto_ptr <Object> > func() { ... }

我想知道它是否安全?

【问题讨论】:

标签: c++ vector auto-ptr


【解决方案1】:

stl 喜欢在其算法中复制元素并使用临时副本(即它们必须是“可复制构造的”和“可分配的”)。虽然这不适用于auto_ptr。将一个auto_ptr 分配给另一个会转移指针的所有权。

auto_ptr&lt;foo&gt; A = B; B 变为NULL,A 是指针的新所有者,B 不可用。当临时对象获得所有权时,它不会返回它,而是有悬挂指针的向量或NULL 指针。

您可以使用 c++11 智能指针,或者提升智能指针或自己实现一个。

【讨论】:

    猜你喜欢
    • 2015-03-14
    • 2011-12-15
    • 1970-01-01
    • 2010-10-07
    • 2012-10-24
    • 1970-01-01
    • 2016-10-26
    • 2014-01-05
    • 1970-01-01
    相关资源
    最近更新 更多