对unique_ptr拥有对象的唯一所有权是什么意思?

Jay*_*ayZ 6 c++ ownership-semantics unique-ptr

我知道std::unique_ptr在对象只有一个所有者std::shared_ptr时使用,而在对象有多个所有者时使用。成为对象的唯一所有者意味着什么?

成为唯一所有者是否意味着没有其他人可以看到该物体?

get()将指针作为引用传递时,可以使用该方法返回原始指针吗?

我觉得,如果必须使用get(),那么我要么通过使用转移了所有权std::move,要么使用了共享指针。

for*_*818 9

所有权就是一切:谁在不再需要资源时清理资源?

成为资源的唯一所有者意味着只有您有责任在不再需要该对象时删除该对象。这意味着在您的生命周期结束后,没有其他人可以使用该对象。如果其他人依靠该对象在生命周期结束后仍然存在,则需要共享所有权。

在现代C ++中,原始指针不应参与所有权。当您将原始指针传递给函数时,您希望该函数不会保留在该指针上以供以后使用。