Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.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
STD的差异:UNQuYJPTR和STD::CysDypPTR在C++中 我是C++初学者。我在代码中遇到了std::unique\u ptr和std::shared\u ptr的用法 typedef std::unique_ptr<type1> type1Handler; typedef std::shared_ptr<type2> type2Handler;_C++_C++11 - Fatal编程技术网

STD的差异:UNQuYJPTR和STD::CysDypPTR在C++中 我是C++初学者。我在代码中遇到了std::unique\u ptr和std::shared\u ptr的用法 typedef std::unique_ptr<type1> type1Handler; typedef std::shared_ptr<type2> type2Handler;

STD的差异:UNQuYJPTR和STD::CysDypPTR在C++中 我是C++初学者。我在代码中遇到了std::unique\u ptr和std::shared\u ptr的用法 typedef std::unique_ptr<type1> type1Handler; typedef std::shared_ptr<type2> type2Handler;,c++,c++11,C++,C++11,我有两个问题: 使用unique_ptr和shared_ptr的优势是什么 它们之间的主要区别是什么? 也许举个例子会很有帮助 它们适用于两个完全不同的用例 std::unique_ptr保留对象的唯一所有权,并在unique_ptr超出范围时销毁该对象。没有两个唯一的\u ptr实例可以管理同一个对象 std::shared_ptr保留对象的共享所有权。多个共享的\u ptr对象可能拥有同一个对象。当拥有该对象的最后一个剩余共享\u ptr被销毁,或者拥有该对象的最后一个剩余共享\u ptr通

我有两个问题:

使用unique_ptr和shared_ptr的优势是什么 它们之间的主要区别是什么?
也许举个例子会很有帮助

它们适用于两个完全不同的用例

std::unique_ptr保留对象的唯一所有权,并在unique_ptr超出范围时销毁该对象。没有两个唯一的\u ptr实例可以管理同一个对象

std::shared_ptr保留对象的共享所有权。多个共享的\u ptr对象可能拥有同一个对象。当拥有该对象的最后一个剩余共享\u ptr被销毁,或者拥有该对象的最后一个剩余共享\u ptr通过operator=或reset被分配另一个指针时,该对象被销毁,其内存被释放

要强制执行唯一所有权,std::unique_ptr是不可分配和不可复制的。这意味着您必须对其使用移动语义

如果您在代码中的某个地方看到唯一的\u ptr,这意味着看,这是指针,我们拥有它!。这不能说是共享ptr,在共享ptr中,所有权可以分散在代码中。

std::unique\u ptr:

标准::共享\u ptr:


你试过谷歌吗?