传递共享指针:按引用还是按值
调用接受共享指针的函数时,开发人员面临着传递共享指针的选择const 引用或按值。虽然出于性能原因,通过 const 引用传递似乎更可取,但该决定值得进一步考虑。
根据 2011 C and Beyond“Ask Us Anything”会议上的专家的说法,传递共享指针通常没有任何优势按价值。推荐的方法是通过 const 引用传递,除非目的是共享对象的所有权。
为什么通过 const 引用传递?
通过 const 引用传递可确保共享指针在函数内保持不可变,保留其值并防止意外修改。这与共享指针的预期行为一致,共享指针象征着对象的共享所有权。
为什么不按值传递?
虽然按值传递可能会创建一个共享指针的副本,现代 C 编译器优化了底层托管对象的不必要的重复。仅当共享指针可以进行移动优化时,按值传递才变得有益,从而允许将托管对象的所有权转移到函数而不进行复制。然而,这种优化取决于所使用的特定 C 版本。
其他注意事项
2012 年 GoingNative“询问我们任何问题”小组进一步详细阐述了此主题。讨论的关键要点包括:
以上是我应该通过引用还是通过值传递共享指针?的详细内容。更多信息请关注PHP中文网其他相关文章!