传递共享指针:通过引用或按值
将shared_ptr(来自boost或C 11 STL)传递给函数时,选择通过 const 引用 (void foo(const shared_ptr
传统上,它人们相信通过引用传递会更快,因为它避免了不必要的复制操作。然而,正如 C and Beyond 2011 专家(Scott、Andrei 和 Herb)所讨论的那样,情况已不再如此。
应该按值传递还是按引用传递?
除非明确需要共享对象的所有权(例如在数据结构或线程之间),否则没有令人信服的理由按值传递shared_ptr。首选通过 const 引用传递,原因如下:
何时按值传递
建议按值传递shared_ptr的唯一时间是目的是将对象的所有权转移给函数。当函数需要负责管理对象的生命周期时,通常会出现这种情况。
其他注意事项
为了获得最佳性能,重要的是要考虑shared_ptr是否可以进行移动优化。正如 Scott Meyers 所解释的,移动优化可以消除不必要的复制操作。然而,这种优化仅在某些版本的 C 中可用。
以上是我应该按值还是按引用传递“shared_ptr”?的详细内容。更多信息请关注PHP中文网其他相关文章!