天天看點

深拷貝和淺拷貝你清楚嗎?

作者:高等技術猿

在計算機程式設計中,深拷貝和淺拷貝是兩種基本的複制技術。比如,在開發一款遊戲的時候,有一個玩家的角色,需要在遊戲中的不同場景中出現,但是每個場景中的角色狀态可能不同,這時候就需要用到深拷貝和淺拷貝了,來實作不同場景中角色的不同狀态。

深拷貝和淺拷貝你清楚嗎?

首先,淺拷貝可以看做是把一個物體的外表複制一份,就像是把一張照片影印一份一樣,影印出來的照片和原照片的外表一模一樣,但是如果原照片的某一部分有變化,影印出來的照片也不會變化,這就是淺拷貝。在程式設計中,如果對一個對象進行淺拷貝,隻是把這個對象的引用複制一份,也就是說,複制出來的對象和原對象指向同一個記憶體空間,如果原對象的屬性發生變化,複制出來的對象也會發生變化。

深拷貝和淺拷貝你清楚嗎?

深拷貝則是把一個物體的内在複制出來,就像是把一個物體真正的複制出來一樣,複制出來的物體和原物體的外表一模一樣,而且如果原物體的某一部分發生變化,複制出來的物體也不會發生變化,這就是深拷貝的比喻。在程式設計中,如果對一個對象進行深拷貝,不僅會把這個對象的引用複制一份,而且會把這個對象的内容也複制一份,也就是說,複制出來的對象和原對象指向不同的記憶體空間,即使原對象的屬性發生變化,複制出來的對象也不會發生變化。

深拷貝和淺拷貝你清楚嗎?

總結起來,淺拷貝隻是複制了一份對象的引用,複制出來的對象和原對象指向同一個記憶體空間,如果原對象的屬性發生變化,複制出來的對象也會發生變化;而深拷貝則不僅複制了一份對象的引用,而且還複制了對象的内容,複制出來的對象和原對象指向不同的記憶體空間,即使原對象的屬性發生變化,複制出來的對象也不會發生變化。

繼續閱讀