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;