使用直接賦值後兩個物件就完全一樣,隨著改變乙個物件的值另乙個物件的值也隨之改變。
淺拷貝,物件中的值型別互補影響,但是引用型別(string雖然是引用型別但特殊存在類值型別)隨著乙個物件的值改變另乙個也會改變。
深拷貝,兩個物件完全獨立互補影響
1我們來看下輸出結果class
program212
13}1415
public
class
classa : icloneable
16//深拷貝
27public
object deepclone()
283637}
3839
static
void main(string
args)
4074
75 }
潛拷貝後值班級名字不受影像但是引用型別person隨著改而值一起出現了變化從jace變成了lee。
而深拷貝並沒有變化。直接賦值後兩物件完全等同。
直接賦值 淺拷貝和深拷貝
我們經常使用的 student s1 newstudent student s2 s1 直接物件賦值,它只是拷貝了物件引用位址而已,並沒有在堆記憶體重新生成乙個新的物件 如下圖 上面的s1和s2引用其實都是指向堆中同乙個student例項位址。所以如果改下s1中的任何成員變數 基本型別或者引用型別 ...
python直接賦值 深拷貝和淺拷貝
python中,物件賦值實際上是物件的引用。當建立乙個物件,將其賦值給另乙個變數,python並沒有拷貝這個物件,而是拷貝了這個物件的引用。所以如果從單純的賦值語句來實現clone物件的話,那可能bug出現的也會莫名其妙.python中可以使用copy模組來複製物件.copy.copy 為淺拷貝,只...
淺拷貝 深拷貝和淺賦值 深賦值
include includeusing namespace std class string else 淺拷貝 也就是系統預設的拷貝,可寫可不寫。string const string s 預設的拷貝構造 深拷貝 string const string s string s2 s1 深賦值 str...