【发布时间】:2012-05-14 13:38:47
【问题描述】:
这个问题扩展了之前的post 讨论boost::shared<T>& 作为构造函数参数的有用性:
class SomeClass {
SomeClass( const boost::shared_ptr<SomeOtherClass>& );
}
用右值引用参数代替boost::shared_ptr<T>& 有什么好处吗?
class SomeClass {
SomeClass( const boost::shared_ptr<SomeOtherClass>&& );
}
特别是,对于多线程设置,具有 shared_ptr 类型的右值引用的构造函数会比按值传递或按引用传递更有用吗?
【问题讨论】:
-
如果您采用右值引用,您可以将
shared_ptr移动 到内部成员中,而不是复制它。复制shared_ptr会导致它增加其引用计数,这比人们最初想象的要昂贵得多。请注意,复制shared_ptr是线程安全的,而移动一个则不是。
标签: c++ constructor c++11 shared-ptr rvalue-reference