C++ 如何使共享指针指向另一个共享指针的对象?

C++ 如何使共享指针指向另一个共享指针的对象?,c++,pointers,shared-libraries,shared-ptr,C++,Pointers,Shared Libraries,Shared Ptr,对于普通指针,它非常简单: int* p = new int; int* x = new int; p=x; 但就份额而言,有: 交换、重置和更多 std::shared_ptr<int> x = NULL; std::shared_ptr<int> y = NULL; 如果我想让x和y都指向这个新的整数5,我是使用reset还是swap或=?我真的很困惑 y = x; y.swap(x); y.reset(x); 有人能解释一下吗 谢谢。您应该使用赋值运算符 y=

对于普通指针,它非常简单:

int* p = new int;
int* x = new int;
p=x;
但就份额而言,有: 交换、重置和更多

std::shared_ptr<int> x = NULL;
std::shared_ptr<int> y = NULL;
如果我想让x和y都指向这个新的整数5,我是使用reset还是swap或=?我真的很困惑

y = x;
y.swap(x);
y.reset(x);
有人能解释一下吗


谢谢。

您应该使用赋值运算符

y=x;
std::shared\u ptr::reset()
需要一个原始指针作为参数


std::shared_ptr::swap()
交换共享_ptr的所有权,而不更改其中一个的
std::shared_ptr::use_cout()

您应该使用赋值运算符

y=x;
std::shared\u ptr::reset()
需要一个原始指针作为参数


std::shared_ptr::swap()
交换共享_ptr的所有权,而不更改其中任何一个的
std::shared_ptr::use_cout()

那么,交换是为了什么呢???@user3395617编辑了答案以包括交换的使用谢谢你这么多我把交换改成了=现在一切都正常了!非常感谢!我在这里看不到@LightnessRacesinOrbit的赋值运算符,所以我可以看到什么是交换???@user3395617编辑的答案,包括交换的使用谢谢,我将交换改为=现在一切都正常了!非常感谢!我看不到这个@LightnessRacesinOrbit的赋值运算符,这里我可以看到std::shared_ptr x,y,z;x=y=z=std::使_共享();标准::共享_ptr x,y,z;x=y=z=std::使_共享();