首页 > 后端开发 > C++ > 在 C 中我应该通过引用还是通过值传递共享指针?

在 C 中我应该通过引用还是通过值传递共享指针?

Susan Sarandon
发布: 2024-11-02 14:39:02
原创
891 人浏览过

Should I Pass shared_ptrs by Reference or by Value in C  ?

传递 Shared_Ptrs:引用与值

在 C 中,当传递一个共享指针(boost 实现或 C 11 STL)时,开发人员可以选择通过引用或通过值传递它。问题来了:哪种方法更合适?

常量引用方法

通过 const 引用传递 (void foo(const shared_ptr& p)) 没有与按值传递相比,性能具有优势。 C 语言杰出人物 Scott Meyers、Andrei Alexandrescu 和 Herb Sutter 在 C and Beyond 2011 的“Ask Us Anything”会议上解决了这种误解。

按值方法传递

按值传递 (void foo(shared_ptr p)) 通常是首选,原因有两个:

  1. 没有不必要的开销:按值传递可以避免创建临时引用,否则会带来不必要的开销。
  2. 语义一致性:按值传递与其他容器类型(例如向量、列表)的语义一致,避免编码实践中的混乱.

替代方法

但是,在需要共享所有权的特定场景中,可能需要按值传递。例如,当在数据结构或线程之间转移所有权时,按值传递可以促进所有权转移,同时确保正确的内存管理。

结论

一般来说,传递const 引用的shared_ptr 没有提供明显的性能优势,因此不建议使用。按值传递是首选方法,可确保一致性并避免不必要的开销。

以上是在 C 中我应该通过引用还是通过值传递共享指针?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板