【问题标题】:boost shared ptr makes copy when changing undelying object?boost shared_ptr 在更改底层对象时进行复制?
【发布时间】:2014-04-24 11:57:24
【问题描述】:

boost::shared_ptr<int> ptr 是否会在

时进行复制
*ptr.get() = 5;

假设refcount3,在上面的行之后它会保持3 吗?或者会发生什么?会分配新的object吗?

【问题讨论】:

    标签: boost shared-ptr refcounting


    【解决方案1】:

    不,它不会复制,因为那样对象将不再被共享。

    另外,无需显式调用get()

    *ptr = 5;
    

    这对引用计数没有影响。

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

    【讨论】:

    • 所以我可以在不影响引用计数的情况下更改底层对象的值?只是所有指向boost::shared_ptr<int> ptr 的对象仍将指向boost::shared_ptr<int> ptr,只是它持有的值会有所不同,对吧?
    • 是的,@Oleksandra,我的回答不会改变。就其价值而言,在这方面它与常规指针 (int*) 完全相同。
    猜你喜欢
    • 2020-03-03
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    相关资源
    最近更新 更多