C 關於深拷貝和淺拷貝

2021-09-24 15:56:23 字數 445 閱讀 5612

在c#中,資料型別有值型別和引用型別

值型別包括:結構體(數值型別,bool型,使用者定義的結構體),列舉,可空型別。

引用型別包括:陣列,使用者定義的類、介面、委託,object,字串。

對於值型別的,拷貝是全拷貝,則是拷貝出另乙個物件,兩個物件的記憶體位址是不同的,乙個物件的屬性修改後不影響另乙個物件;

對於引用型別,一般都是淺拷貝,則只是引用位址,記憶體位址還是相同的,修改乙個物件的屬性後另乙個物件也會影響。

public static t deepcopy( t obj)

return (t)ob;

}

關於深拷貝和淺拷貝

以nsstring與nsmutablestring舉例 nsstring str1 xfj nsmutablestring str2 str1 mutablecopy nslog str1,str2 nslog p p str1,str2 輸出結果 xfj xfj123 0x102701068 0x...

C 淺拷貝和深拷貝

class test test const test t val new int t.val test private int val 現在定義兩個物件,test t1 9 test t2 t1 如果你不提供copy建構函式 注釋掉的那個 那麼t1和t2的成員 val指向同乙個物件,當析構的時候,同...

c 深拷貝和淺拷貝

深拷貝和淺拷貝 ca const ca c 就是我們自定義的拷貝建構函式。可見,拷貝建構函式是一種特別的建構函式,函式的名稱必須和類名稱一致,他的唯一的乙個引數是本型別的乙個引用變數,該引數是const型別,不可變的。例如 類x的拷貝建構函式的形式為x x x 當用乙個已初始化過了的自定義類型別物件...