淺拷貝和深拷貝

2021-06-27 12:15:20 字數 340 閱讀 3397

淺拷貝:

當物件的字段值被拷貝時,字段引用的物件不會被拷貝。例如,如果乙個物件有乙個指向字串的字段,並且我們對該物件做了乙個淺拷貝,那麼這兩個物件將引用同乙個字串。

深拷貝:

對物件例項中欄位引用的物件也進行拷貝,如果乙個物件有乙個指向字串的字段,並且我們對該物件進行了深拷貝的話,那麼我們將建立乙個物件和乙個新的字串,新的物件將引用新的字串。

也就是說,執行深拷貝建立的新物件和原來物件不會共享任何東西,改變乙個物件對另外乙個物件沒有任何影響,而執行淺拷貝建立的新物件與原來物件共享成員,改變乙個物件,另外乙個物件的成員也會改變。

深拷貝和淺拷貝

淺拷貝就是物件的資料成員之間的簡單賦值,如你設計了乙個沒有類而沒有提供它的複製建構函式,當用該類的乙個物件去給令乙個物件賦值時所執行的過程就是淺拷貝,如 class a a private int data int main 這一句b a 就是淺拷貝,執行完這句後b.data 5 如果物件中沒有其他...

淺拷貝和深拷貝

以下情況都會呼叫拷貝建構函式 乙個物件以值傳遞的方式傳入函式體 例如 已知class a,class b void func a a void func a a func b b 此時函式對b的操作是呼叫拷貝建構函式後的臨時拷貝物件。多數傳指標 乙個物件以值傳遞的方式從函式返回 如 return b...

深拷貝和淺拷貝

ios提供了copy和mutablecopy方法,顧名思義,copy就是複製了乙個imutable的物件,而mutablecopy就是複製了乙個mutable的物件。以下將舉幾個例子來說明。1 系統的非容器類物件 這裡指的是nsstring nsnumber等等一類的物件。nsstring stri...