const boost的目的:: shared_ptr <t>&amp;作为函数参数?</t>

时间:2012-05-05 02:09:13

标签: c++ boost

我正在使用某个大型且维护良好的开源C ++库,并遇到了一个具有

形式的构造函数的类定义
class SomeClass {
    SomeClass( const boost::shared_ptr<SomeOtherClass>& );
}

我的问题是:通过引用传递const boost::shared_ptr<T>有什么意义?通过值boost::shared_ptr<T>确实存在不可忽视的开销,或者通过我不知道的值传递boost::shared_ptr<T>是否存在其他类型的危险?

3 个答案:

答案 0 :(得分:9)

通过值传递它将复制它,从而导致引用计数增量,在所有线程之间同步。绝对不容忽视。

答案 1 :(得分:1)

您不仅避免了复制shared_ptr的任何(轻微)开销,而且还声明您不打算保留指针的副本。我不认为你可以复制shred_ptr而不修改它,const会阻止它。

答案 2 :(得分:1)

如果您不需要副本,那么为什么要复制?如果他们继续将其复制到体内,那将是另一个问题。