Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 关于唯一指针的问题_C++_C++11_Memory_Smart Pointers_Unique Ptr - Fatal编程技术网

C++ 关于唯一指针的问题

C++ 关于唯一指针的问题,c++,c++11,memory,smart-pointers,unique-ptr,C++,C++11,Memory,Smart Pointers,Unique Ptr,为什么“唯一指针移动”赋值运算符使用“重置”重新分配 有什么理由不进行浅层复制吗?您不能复制std::unique\u ptr。这就是关键所在——它是一个专有所有权智能指针。如果你复制了一份,你就不再拥有独家所有权 reset获取由_Right.release从移动源释放的原始指针的所有权,同时确保首先删除分配目标当前拥有的任何指针 请注意,没有重新分配。reset不执行任何分配-它承担给定原始指针的所有权,同时可能释放reset调用时它拥有的任何对象。您不能复制std::unique\u pt

为什么“唯一指针移动”赋值运算符使用“重置”重新分配

有什么理由不进行浅层复制吗?

您不能复制std::unique\u ptr。这就是关键所在——它是一个专有所有权智能指针。如果你复制了一份,你就不再拥有独家所有权

reset获取由_Right.release从移动源释放的原始指针的所有权,同时确保首先删除分配目标当前拥有的任何指针

请注意,没有重新分配。reset不执行任何分配-它承担给定原始指针的所有权,同时可能释放reset调用时它拥有的任何对象。

您不能复制std::unique\u ptr。这就是关键所在——它是一个专有所有权智能指针。如果你复制了一份,你就不再拥有独家所有权

reset获取由_Right.release从移动源释放的原始指针的所有权,同时确保首先删除分配目标当前拥有的任何指针


请注意,没有重新分配。reset不执行任何分配-它承担给定原始指针的所有权,同时可能释放reset调用时它拥有的任何对象。

感谢您首先回答。重置功能是否未重新分配?重置调用前后的唯一指针地址不同。这不意味着它已经被重新分配了吗@김정연 不需要。所有这一切只是转移已经由另一个std::unique\u ptr对象管理的分配的所有权。将一个指针分配给另一个指针并不意味着发生任何分配。感谢您首先回答。重置功能是否未重新分配?重置调用前后的唯一指针地址不同。这不意味着它已经被重新分配了吗@김정연 不需要。所有这一切只是转移已经由另一个std::unique\u ptr对象管理的分配的所有权。将一个指针分配给另一个指针并不意味着发生任何分配。
unique_ptr& operator=(unique_ptr&& _Right) noexcept {
    if (this != _STD addressof(_Right)) {
        reset(_Right.release());
        _Mypair._Get_first() = _STD forward<_Dx>(_Right._Mypair._Get_first());
    }
    return *this;
}