理解「淺拷貝」和「深拷貝」

2022-04-12 07:02:33 字數 581 閱讀 8469

淺拷貝:將原物件(原陣列)的「引用」直接賦給新物件(新陣列),新物件(新陣列) 是原物件(原陣列)的乙個引用。如果改變這個新物件(新陣列),原物件(原陣列)就會改變。

深拷貝:將原物件的各項屬性的「值」(陣列的所有元素)都拷貝給新物件(新陣列),是拷貝的「值」,而不是「引用」。

為什麼要使用深拷貝?

希望改變新物件(新陣列)的時候,不改變原物件(原陣列)。

對於陣列如何使用深拷貝:

1.直接遍曆法

var arr = [1, 2, 3, 4

]; function copy(arr)

return

newarr;

}var copyarr =copy(arr);

copyarr[

0] = 50

; console.log(arr);

//[1, 2, 3, 4]

console.log(copyarr); //

[50, 2, 3, 4]

c 淺拷貝和深拷貝理解

為什麼c 會設定這兩種拷貝呢,因為在某些情況下,類內成員變數需要動態開闢堆記憶體,如果實行位拷貝,也就是說把物件裡的值完全複製給另乙個物件,如a b。這時,如果b中有乙個成員變數指標已經申請了記憶體,那麼a中的那個成員變數也指向同一塊記憶體。這就出現了問題 當b把記憶體釋放了 析構 這時a記憶體就成...

深拷貝和淺拷貝的理解

為什麼要使用深拷貝和淺拷貝?當你想複製乙個物件時,一般做法是obj2 obj1,但是當你改動obj2的時候,會影響到obj1,而obj1也會影響到obj2,所以需要深拷貝和淺拷貝來解決物件的直接賦值仍然 連線 的問題。淺拷貝 複製乙份引用,讓所有引用物件指向乙份資料,並且可以修改這份資料,即只對指標...

深拷貝和淺拷貝的理解

物件之間賦值本質上 是物件之間的引用傳遞而已。也就是多個物件指向同乙個資料空間。淺拷貝是對乙個物件的頂層資料的拷貝。深拷貝是對於乙個物件所有層次的拷貝 遞迴 注意 型別 int型別,long型別 python3已去除long型別,只剩下int型別的資料 屬於物件,不是變數 深淺拷貝的作用 1,減少記...