c – 我们应该通过引用还是通过值传递shared_ptr?
作者:互联网
当一个函数采用shared_ptr(来自boost或C 11 STL)时,你传递它吗?
> by const reference:void foo(const shared_ptr< T>& p)
>或按值:void foo(shared_ptr< T> p)?
我更喜欢第一种方法,因为我怀疑它会更快.但这真的值得吗还是还有其他问题吗?
您能否说出您选择的原因或案例,为什么您认为无关紧要.
解决方法:
Scott,Andrei和Herb在Ask Us Anything会议期间于C++ and Beyond 2011讨论并回答了这个问题.观看时间为4分34秒on shared_ptr
performance and correctness.
简而言之,除非目标是共享对象的所有权(例如,在不同数据结构之间或不同线程之间),否则没有理由通过值传递.
除非,您可以按照上面链接的谈话视频中的Scott Meyers所解释的那样移动优化它,但这与您可以使用的C的实际版本有关.
这次讨论的重大更新发生在GoingNative 2012会议的Interactive Panel: Ask Us Anything!期间值得关注,特别是从22:50开始.
标签:c,c11,shared-ptr,boost 来源: https://codeday.me/bug/20190916/1807921.html