深拷貝和淺拷貝

2021-10-04 06:25:19 字數 666 閱讀 8814

複雜資料型別的賦值操作

//arr1中儲存的是陣列的記憶體位址

var arr1 =[1

,2,3

,4,5

];//將arr1儲存的記憶體位址賦值給arr2,兩個變數儲存的是相同的記憶體位址

var arr2 = arr1;

//arr1和arr2同時儲存的是相同的資料,操作的也是同乙個陣列,因此操作arr1,arr2也會改變

arr1[0]

='成都'

;cosole.

log(arr2)

;

var arr3 =[5

,5,5

,5,5

];//獲取arr3中的所有資料數值,獲取到新的陣列中

var arr4 =

;//通過迴圈,生成arr3的所有索引下標

for(

var i =

0; i <= arr3.length-

1; i++

)cosole.

log(arr4)

;//這時改變arr3的資料數值,與arr4無關

arr3[0]

=89;cosole.

log(arr3 , arr4)

;

這是我在逆戰班學習中理解到的深淺拷貝。

深拷貝和淺拷貝

淺拷貝就是物件的資料成員之間的簡單賦值,如你設計了乙個沒有類而沒有提供它的複製建構函式,當用該類的乙個物件去給令乙個物件賦值時所執行的過程就是淺拷貝,如 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...