[英]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.