【发布时间】:2012-10-01 21:15:06
【问题描述】:
可能重复:
Why is it wrong to use std::auto_ptr<> with standard containers?
我有一个函数可以在指针中返回一些对象,所以我使用:
vector <auto_ptr <Object> > func() { ... }
我想知道它是否安全?
【问题讨论】:
可能重复:
Why is it wrong to use std::auto_ptr<> with standard containers?
我有一个函数可以在指针中返回一些对象,所以我使用:
vector <auto_ptr <Object> > func() { ... }
我想知道它是否安全?
【问题讨论】:
stl 喜欢在其算法中复制元素并使用临时副本(即它们必须是“可复制构造的”和“可分配的”)。虽然这不适用于auto_ptr。将一个auto_ptr 分配给另一个会转移指针的所有权。
auto_ptr<foo> A = B; B 变为NULL,A 是指针的新所有者,B 不可用。当临时对象获得所有权时,它不会返回它,而是有悬挂指针的向量或NULL 指针。
您可以使用 c++11 智能指针,或者提升智能指针或自己实现一个。
【讨论】: