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

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

Patricia Arquette
Patricia Arquette原创
2024-10-30 19:50:02648浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn