今天在把 VLC 的代码转成 JAVA的过程中,遇到了一个让我困惑的问题
对象间的赋值到底是怎样的
就以前我的了解,JAVA的参数传递看似是引用传递,其实也是值传递,是把对象的地址拷贝后赋给 函数的参数,例如
void set(object a1){
a1.set(" hello");
a1=new Object(" world");
}
在这里原来的对象只执行了第一布,而第二步没有执行。因为new 命令把新的地址给了a1,a1和函数的传入参数的地址已经彻底没有关系了。
另外,JAVA中的对象赋值都是浅拷贝,也就是两个对象共同拥有同一个值,一个对象改变了这个值另外一个对象也会跟着改变。
如果要进行深拷贝,在C++中是重载运算符“=”,拷贝构造函数和clone方法。
具体可参照clone方法~