在 C++ 中,除非显式使用引用,否则赋值操作是通过拷贝(值传递)的方式进行的。也就是说:
-
C++ 的值传递:
vdir temdir = guanceDataList[m];
这行代码会调用
vdir
的拷贝构造函数,将guanceDataList[m]
的数据复制到temdir
中。此后,对temdir
的修改不会反映到guanceDataList[m]
上,因为它们是两个独立的对象。如果希望直接修改原来的元素,可以使用引用,例如:vdir& temdir = guanceDataList[m];
-
Java 的引用传递:
在 Java 中,数组存储的是对象的引用。当你取出数组中的一个元素时,实际上得到的是这个对象的引用。对这个引用所指向的对象进行修改,会直接影响数组中的对象,因为它们实际上是同一个对象。
总结来说,C++ 默认是值传递(复制对象),而 Java 默认存储和传递的是对象引用,所以在 Java 中对数组元素进行操作会直接影响原数组中的对象。