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

How do we make a shared pointer point to an object of another shared pointer?

本文关键字:共享 指针 对象 另一个 何使一      更新时间:2023-10-16

对于Normal指针,它就像这样简单:

int* p = new int;
int* x = new int;
p=x;

但与共享有:交换、重置和更多

std::shared_ptr<int> x = NULL;
std::shared_ptr<int> y = NULL;

我知道reset用于"new"

x.reset(new int(5));

如果我想让x和y都指向这个新的整数5,我是使用reset还是swap还是= ?我真的很困惑。

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

谢谢。

应该使用赋值运算符

y=x;

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

std::shared_ptr::swap()交换了shared_ptrs的所有权,而不改变两者的std::shared_ptr::use_cout()