使用普通指针,它很简单:
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);
有人可以解释一下吗?
感谢。
答案 0 :(得分:5)
您应该使用赋值运算符
y=x;
std::shared_ptr::reset()
期望原始指针作为参数
std::shared_ptr::swap()
在不更改任何一个std::shared_ptr::use_cout()
的情况下交换shared_ptrs的所有权。