常量提升的目的:: shared_ptr的 &AS函数的参数?(Purpose of cons

2019-09-17 01:15发布

我使用的是某些大型和维护良好的开源C ++库和跨越具有形式的构造函数的类定义来

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

我的问题是:什么是传递点const boost::shared_ptr<T>引用? 是否真的与传递相关的开销的一个不可忽略的量boost::shared_ptr<T>的值,或者是有一些其他种类的危险传递boost::shared_ptr<T>的值,我不知道的?

Answer 1:

按值传递这是要复制它导致引用计数的增量,在所有线程同步。 绝对不可忽视的。



Answer 2:

你不仅是避免复制任何(轻微)开销shared_ptr ,但你也宣告你的意图不保留指针的副本。 我不认为你可以做一个副本shred_ptr无需修改它, const会阻止。



Answer 3:

如果你不需要有一个副本,那么为什么制作副本吗? 这将是另外一个问题,如果他们继续它在人体内复制反正。



文章来源: Purpose of const boost::shared_ptr& as function argument?
标签: c++ boost