【发布时间】:2014-04-24 11:57:24
【问题描述】:
boost::shared_ptr<int> ptr 是否会在
*ptr.get() = 5;
假设refcount 是3,在上面的行之后它会保持3 吗?或者会发生什么?会分配新的object吗?
【问题讨论】:
标签: boost shared-ptr refcounting
boost::shared_ptr<int> ptr 是否会在
*ptr.get() = 5;
假设refcount 是3,在上面的行之后它会保持3 吗?或者会发生什么?会分配新的object吗?
【问题讨论】:
标签: boost shared-ptr refcounting
不,它不会复制,因为那样对象将不再被共享。
另外,无需显式调用get():
*ptr = 5;
这对引用计数没有影响。
(创建新的共享对象:ptr = boost::make_shared<int>(5))
【讨论】:
boost::shared_ptr<int> ptr 的对象仍将指向boost::shared_ptr<int> ptr,只是它持有的值会有所不同,对吧?
int*) 完全相同。