首页 > 后端开发 > C++ > 正文

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

Patricia Arquette
发布: 2024-10-30 19:50:02
原创
598 人浏览过

Should I Pass Shared Pointers by Reference or by Value?

传递共享指针:按引用还是按值

调用接受共享指针的函数时,开发人员面临着传递共享指针的选择const 引用或按值。虽然出于性能原因,通过 const 引用传递似乎更可取,但该决定值得进一步考虑。

根据 2011 C and Beyond“Ask Us Anything”会议上的专家的说法,传递共享指针通常没有任何优势按价值。推荐的方法是通过 const 引用传递,除非目的是共享对象的所有权。

为什么通过 const 引用传递?

通过 const 引用传递可确保共享指针在函数内保持不可变,保留其值并防止意外修改。这与共享指针的预期行为一致,共享指针象征着对象的共享所有权。

为什么不按值传递?

虽然按值传递可能会创建一个共享指针的副本,现代 C 编译器优化了底层托管对象的不必要的重复。仅当共享指针可以进行​​移动优化时,按值传递才变得有益,从而允许将托管对象的所有权转移到函数而不进行复制。然而,这种优化取决于所使用的特定 C 版本。

其他注意事项

2012 年 GoingNative“询问我们任何问题”小组进一步详细阐述了此主题。讨论的关键要点包括:

  • 通过 const 引用传递允许从函数内返回共享指针的可能性。
  • 通过 const 引用传递清楚地表明该函数不取得对象的所有权,从而提高代码清晰度。
  • 在需要转移所有权的情况下,通过值传递或使用 std::move() 明确表明要假定所有权。

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

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