与赋值类似,reset 会更新引用计数,如果需要的话,会释放 p 指向的对象。reset 成员经常与 unique 一起使用,来控制多个 shared_ptr 共享的对象。在改变底层对象之前,我们检查自己是否是当前对象仅有的用户。如果不是,在改变之前要制作一份新的拷贝:
if(!p.unique())
p.reset(new string (*p)); //我们不是唯一用户;分配新的拷贝
*p += newVal;//现在我们知道自己是唯一的用户,可以改变对象的值
这段话和代码的含义 v2er 们 可以解释一下吗?一直不太理解他这段话和代码的意义
感谢!