繁体   English   中英

const boost :: shared_ptr的目的 <T> &作为函数参数?

[英]Purpose of const boost::shared_ptr<T>& as function argument?

我正在使用一个大型且维护良好的开源C ++库,并遇到了一个具有表单构造函数的类定义

class SomeClass {
    SomeClass( const boost::shared_ptr<SomeOtherClass>& );
}

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM