其他分享
首页 > 其他分享> > c – 我们应该通过引用还是通过值传递shared_ptr?

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