我们如何使共享指针指向另一个共享指针的对象?

Rim*_*oun 1 c++ pointers shared-libraries shared-ptr

使用Normal指针,它很简单:

int* p = new int;
int* x = new int;
p=x;
Run Code Online (Sandbox Code Playgroud)

但是有了共享,有:swap,reset等等

std::shared_ptr<int> x = NULL;
std::shared_ptr<int> y = NULL;
Run Code Online (Sandbox Code Playgroud)

我知道重置用于"新"

x.reset(new int(5));
Run Code Online (Sandbox Code Playgroud)

如果我希望x和y都指向这个新的整数5,我是否使用reset或swap或=?我真的很困惑.

y = x;
y.swap(x);
y.reset(x);
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下吗?

谢谢.

Ste*_*hen 5

你应该使用赋值运算符

y=x;
Run Code Online (Sandbox Code Playgroud)

std::shared_ptr::reset() 期望原始指针作为参数

std::shared_ptr::swap()交换shared_ptrs的所有权而不改变其中std::shared_ptr::use_cout()任何一个.