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

时间:2015-05-22 19:28:50

标签: 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;

我知道重置用于&#34; new&#34;

x.reset(new int(5));

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

y = x;
y.swap(x);
y.reset(x);

有人可以解释一下吗?

感谢。

1 个答案:

答案 0 :(得分:5)

您应该使用赋值运算符

y=x;

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

std::shared_ptr::swap()在不更改任何一个std::shared_ptr::use_cout()的情况下交换shared_ptrs的所有权。