boost shared ptr在更改不存在的对象时进行复制?

boost shared ptr在更改不存在的对象时进行复制?,boost,shared-ptr,refcounting,Boost,Shared Ptr,Refcounting,boost::shared_ptr ptr是否在 *ptr.get() = 5; 假设refcount是3,在上面的行之后它会保持3?或者会发生什么?是否将分配新对象?不,它不会复制,因为这样将不再共享该对象 另外,不需要显式调用get(): 这对refcount没有影响 (要创建新的共享对象:ptr=boost::make_shared(5))这样我就可以更改基础对象的值而不影响refcount?只是所有指向boost::shared_ptr ptr的对象仍将指向boost::shared_

boost::shared_ptr ptr
是否在

*ptr.get() = 5;

假设
refcount
3
,在上面的行之后它会保持
3
?或者会发生什么?是否将分配新对象?

不,它不会复制,因为这样将不再共享该对象

另外,不需要显式调用
get()

这对refcount没有影响


(要创建新的共享对象:
ptr=boost::make_shared(5)

这样我就可以更改基础对象的值而不影响refcount?只是所有指向
boost::shared_ptr ptr
的对象仍将指向
boost::shared_ptr ptr
,只是它所持有的值会有所不同,对吗?是的,@Oleksandra,我的答案不会改变。值得一提的是,它在这方面与常规指针(
int*
)完全相同。
*ptr = 5;