执行以下操作安全吗?

auto pt = getUniquePtr();
while (pt) {
  vector_of_objects.push_back(std::move(pt));
  pt = getUniquePtr();
}
getUniquePtr返回一个unique_ptr<MyObject>。我相信,在移开对象之后,是否将其他内容重新分配给pt没关系,对吗?

最佳答案

是的,这很好。

从对象移开会使其处于有效但未指定的状态。所有类不变式都得到维护,并且操作按规定进行。

这意味着您可以依靠能够重新分配,但不能对指针的当前内容做任何保证。

关于c++ - 移动并重新分配内容后的unique_ptr,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33868253/

10-10 14:36