深拷貝 淺拷貝 直接賦值

2022-03-08 19:36:32 字數 607 閱讀 7550

使用直接賦值後兩個物件就完全一樣,隨著改變乙個物件的值另乙個物件的值也隨之改變。

淺拷貝,物件中的值型別互補影響,但是引用型別(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...