Java c ++参考问题

时间:2011-01-06 08:47:49

标签: java c++

在c ++中我们使用&代表传递参考。由于对象总是通过引用传递,因此您不需要使用此&?或者没关系?

java和c ++在传递值和引用方面有何不同。我认为java中的所有内容都是通过引用传递的,但它是通过值传递的?为什么是这样?那么,当对象通过引用传递时,原语是按值传递的吗?

2 个答案:

答案 0 :(得分:8)

清除两件事:

  1. C ++默认值通过值始终传递,您必须明确指出您的函数是否接受&
  2. 的引用
  3. Java总是通过值传递(对象通过引用传递,但引用按值传递 - 即它是副本对象的引用 - 因此你可以使用该引用修改对象,但你不能指望像交换[一个引用与另一个]之类的操作才能正常工作)

答案 1 :(得分:0)

我之前在C ++参数上写了一个详细的答案,传递语义,其中包括关于Java语义如何不同的最后一节。你可以阅读它here

基本上,将数组放在一边(更多关于数组here),因为那些是不同的野兽。在C ++中,如果参数类型不包含&,则按值传递(复制)。如果类型包含*,那么它是一个指针,它是指向被复制的指针,但是会执行一个副本。

在Java中,对于引用类型,您从不使用实际对象,而是引用它(使用C / C ++方言指针)。所有参数都按值传递,这意味着将复制引用(该函数将无法修改调用者的引用),但可以通过复制的引用修改引用的对象。