【发布时间】:2016-06-01 09:53:27
【问题描述】:
在 C++ 中,是否所有类型都按值传递,除非它带有 & 或 * 符号?
例如,在 Java 中,将数组作为函数参数传递将默认通过引用传递。 C++ 是否让您对此有更多控制权?
编辑:感谢您的所有回复,我想我更清楚地了解整个传递值的事情。对于仍然对 Java 如何按值传递(对象引用的副本)感到困惑的任何人,this answer really cleared it up for me.
【问题讨论】:
-
即使在java中,对象也是按值传递的。理想情况下,将对象视为通过引用传递会使它更容易理解,这可能是一些书籍和参考文献将传递对象称为
pass by reference的原因。 Java 遵循按值传递,其中没有像pass by reference这样的东西。 -
在传递数组的情况下,C++ 提供了向量作为另一种选择。我只是把这句话放在了错误的地方,对所有的反对者。
-
在比较两种语言以及它们如何处理参数时,我会避免使用“价值”和“参考”之类的术语。 C++ 的这些术语意味着特定的东西。 Java 的这些术语意味着特定的事物。对于另一种语言,再次,具体的事情。
-
在Java中,“引用”是一种值,用于引用这些值的“引用”一词与“通过引用传递”无关。 “按引用传递”和“按值传递”是指函数传递的是对变量的引用还是变量的值。
-
请注意,C++11 添加了
&&。
标签: c++ pass-by-reference pass-by-value