深拷貝與淺拷貝主要的不同是對於引用變數的拷貝,淺拷貝的引用變數不僅僅是拷貝乙個引用(位址).引用變數的成員也一樣深拷貝。廢話少說下面是兩個拷貝的例子
1.淺拷貝
1view codepackage
com.lightcopy;23
public
class professor implements
cloneable
1011
public
void
setname(string name)
1415
public
intgetage()
1819
public
void setage(int
age)
2223
public professor(string name, int
age)
2728
@override
29public
object clone()
35catch
(clonenotsupportedexception e)
36
3940
return
o;
41}
4243 }
2.深拷貝
1view codepackage
com.deepcopy;23
import
com.lightcopy.professor;45
public
class student implements
cloneable
1213
public
void
setpro(professor pro)
1617
public student(string name, int
age,professor pro)
2223
public
string getname()
2627
public
void
setname(string name)
3031
public
intgetage()
3435
public
void setage(int
age)
3839
@override
40public
object clone() catch
(clonenotsupportedexception ex)
47 obj.pro=(professor)pro.clone();
48return
obj;49}
50 }
java深拷貝與淺拷貝
淺拷貝與深拷貝 淺拷貝 被複製物件的所有變數都含有與原來的物件相同的值,而所有的對其他物件的引用仍然指向原來的物件。換言之,淺複製僅僅複製所考慮的物件,而不複製它所引用的物件。深拷貝 被複製物件的所有變數都含有與原來的物件相同的值,除去那些引用其他物件的變數。那些引用其他物件的變數將指向被複製過的新...
「淺拷貝」與「深拷貝」
c 中物件的複製就如同 轉殖 用乙個已有的物件快速地複製出多個完全相同的物件。一般而言,以下三種情況都會使用到物件的複製 1 建立乙個新物件,並用另乙個同類的已有物件對新物件進行初始化,例如 cpp view plain copy class rect rect rect1 rect rect2 r...
淺拷貝與深拷貝
淺拷貝 1 2 myclass a,b a b 為了封裝性和解耦,同型別的兩個物件之間進行賦值操作時,所有成員變數被複製,包括私有成員 指標變數。類的成員函式在傳遞或返回物件時都會進行物件複製產生臨時物件,比如函式呼叫時實參變為形參,以及函式返回物件。考慮到效能和使用者要求不同,編譯器不複製物件內部...