use*_*264 6 c++ move unique-ptr
如果我使用相同的 unique_ptr 两次调用 std::move 会发生什么?
unique_ptr<int> foo(new int(5));
unique_ptr<int> bar = move(foo);
unique_ptr<int> baz = move(foo);
Run Code Online (Sandbox Code Playgroud)
PS:不,std::unique_ptr 的用法不是同一个问题。这两个问题都是关于unique_ptr的,这是他们之间唯一的共同点。
本质上,什么都没有。标准库要求移动库类型使其处于有效但未指定的状态。有效意味着您仍然可以对不需要先决条件的对象执行操作。那就是给它分配一个新值或销毁它。因为unique_ptr我们实际上得到了更多的状态保证,因为移动构造函数保证移动的对象被设置为nullptr。这意味着在所有这一切的最后都bar持有指针 并且foo和baz都是nullptr。