對深拷貝與淺拷貝區別的認識

2021-09-25 15:21:29 字數 1222 閱讀 6880

1.定義

一聽到拷貝二字,很容易想到乙個單詞「copy」,對,就是複製的意思。那麼它的作用也就是為了方便嘛。如果從字面意思上來說,深拷貝它拷貝的程度或者說級別深一點,而淺拷貝就比較淺一些。具體來說淺拷貝能複製變數,如果物件內還有物件,則只能複製物件的位址;而深拷貝能複製變數,也能複製當前物件的內部物件。注意,淺拷貝需要實現 cloneable介面。下面用**再進行進一步的分析。

人家說的更詳細

淺拷貝是指拷貝物件時僅僅拷貝物件本身(包括物件中的基本變數),而不拷貝物件包含的引用指向的物件。深拷貝不僅拷貝物件本身,而且拷貝物件包含的引用指向的所有物件。舉例來說更加清楚:物件a1中包含對b1的引用,b1中包含對c1的引用。淺拷貝a1得到a2,a2

中依然包含對b1的引用,b1中依然包含對c1的引用。深拷貝則是對淺拷貝的遞迴,深拷貝a1得到a2,a2中包含對b2(b1的copy)的引用,b2

中包含對c2(c1的copy)的引用。

2.**

① 淺拷貝:

class teacher implements cloneable

public object clone() throws clonenotsupportedexception

}class student implements cloneable

public object clone() catch (clonenotsupportedexception e)

return o;}}

public class copytest

}可以明顯的看出,s和s1都變了,相對應的t的屬性也變了,說明s和是s1指向的是同乙個物件。

class teacherimplements cloneable

public object clone() catch (clonenotsupportedexception e)

return o;}}

class student implements cloneable

public object clone() catch (clonenotsupportedexception e)

o.p = (teacher ) p.clone();

return o;}}

public class deepcopytest}

具體的內容參考部落格老前輩href=「

淺拷貝與深拷貝的區別

簡單的來說就是,在有指標的情況下,淺拷貝只是增加了乙個指標指向已經存在的記憶體,而深拷貝就是增加乙個指標並且申請乙個新的記憶體,使這個增加的指標指向這個新的記憶體,採用深拷貝的情況下,釋放記憶體的時候就不會出現在淺拷貝時重複釋放同一記憶體的錯誤!我列舉乙個例子來說吧 你正在編寫c 程式中有時用到,操...

淺拷貝與深拷貝的區別

簡單的來說就是,在有指標的情況下,淺拷貝只是增加了乙個指標指向已經存在的記憶體,而深拷貝就是增加乙個指標並且申請乙個新的記憶體,使這個增加的指標指向這個新的記憶體,採用深拷貝的情況下,釋放記憶體的時候就不會出現在淺拷貝時重複釋放同一記憶體的錯誤!我列舉乙個例子來說吧 你正在編寫c 程式中有時用到,操...

淺拷貝與深拷貝的區別

在python中有乙個copy模組。copy.copy 是淺拷貝 copy.deepcopy 是深拷貝 對於不可變型別,無論是淺拷貝還是深拷貝都只是指向作用,沒有進行拷貝,對於可變型別copy.copy 與copy.deepcopy存在差距 import copy a 1,2,3 b 4,5 c a...