【发布时间】:2014-12-06 17:59:48
【问题描述】:
在C++11 中,我们可以使用std::move() 将一个对象的所有权转移给另一个unique_ptr。所有权转移后,让出所有权的智能指针变为null,get()返回nullptr.
std::unique_ptr<int> p1(new int(42));
std::unique_ptr<int> p2 = std::move(p1); // Transfer ownership
在将所有权转移给另一个 unique_ptr 时,这在哪些情况下有用?
【问题讨论】:
-
就是这样。标准库中的智能指针实际上不应被视为自动释放的指针,而是根据所有权。您是否有一些数据只能由单个实体“拥有”,然后使用唯一指针。
-
当您处理线程或套接字等不可复制数据并且需要将其从一个位置替换到另一个位置(例如,将其放入向量中)时,它很有用。
标签: c++ c++11 std move-semantics