淺複製與深層複製

2021-06-21 14:15:57 字數 437 閱讀 1093

一般情況下像c語言的複製語句,會將是對乙個物件的引用複製;例子:

a = 3 ; b = a;這個例子將a指向記憶體內容為3的,然後後面的賦值語句,只是再一次將b指向了a所指向的;

這是對副本進行操作不影響原來物件,但如果對原來物件進行操作,會對副本進行影響;

利用歸檔進行深層複製:

data =  [nskeyedarchiver archiveddatawithrootobject: dataarray];

dataarray2 = [nskeyedunarchiver unarchiveobjectwithdata;data];

或者:dataarrar2 = [nskeyedunarchiver unarchiveobjectwithdata: [ nskeyedarchiver archiveddatawithrootobject: dataarray]];

淺複製與深複製

舉個複製 的例子 function clone p,s for var prop in p return s var a var b clone a,b b.hobby 1 reading b.hobby 1 reading c.hobby 1 reading 由上面的例子可以看出,當執行淺複製時,...

深複製與淺複製

2者主要區別 是否為成員變數分配新記憶體空間 複製建構函式有2種 深複製與淺複製 當將乙個物件a複製給另乙個物件b時,系統會呼叫複製建構函式 編譯器預設的複製建構函式是淺拷貝,它將原物件的每乙個成員變數複製到新物件的成員變數中去。因而最後兩個物件的變數均指向相同的資料成員的記憶體位址。當資料成員中沒...

淺複製與深複製

1.淺複製 被複製物件的所有變數都含有與原來的物件相同的值,而其所有的對其他物件的引用都仍然指向原來的物件。說明 乙個物件中的資料成員 include using namespace std class test test const test c 複製建構函式,提供乙個同型別物件作為引數 void...