Kry*_*n S 2 c++
如果我有一个未命名的unique_ptr对象,持有一个对象Foo,为什么该对象在被添加到向量时不会被删除?
例:
vec.push_back(std::unique_ptr<Foo>(new Foo())));
为什么不删除Foo?我试图实现这个,但我似乎无法解决这个问题,因为我删除了析构函数中的对象.
Sil*_*olo 6
参数std::vector::push_back是临时的,因此它将push_back作为右值引用传递给它.正如您在文档中看到的,push_back有两种形式,第二种采用右值引用.在unique_ptr将得到移动到载体,而你的说法将不再拥有内存中创建的临时.
std::vector::push_back
push_back
unique_ptr
你不能复制std::unique_ptr; 如果你试过,你会得到一个编译错误.但是,移动一个独特的指针是完全允许的; 前一个所有者不再拥有它曾经指向的内存.
std::unique_ptr
归档时间:
7 年,6 月 前
查看次数:
145 次
最近记录: