1. 程式人生 > >淺拷貝和深拷貝的區別.md

淺拷貝和深拷貝的區別.md

淺拷貝和深拷貝的區別:

淺拷貝

對一個已知物件進行拷貝,編譯系統會自動呼叫一種建構函式——拷貝建構函式,如果使用者未定義拷貝建構函式,則會呼叫預設拷貝建構函式,呼叫一次建構函式,呼叫兩次解構函式,兩個物件的指標成員所指記憶體相同,但是程式結束時該記憶體卻被釋放了兩次,會造成記憶體洩漏問題。

深拷貝

在對含有指標成員的物件進行拷貝時,必須要自己定義拷貝建構函式,使拷貝後的物件指標成員有自己的記憶體空間,即進行深拷貝,這樣就避免了記憶體洩漏發生,呼叫一次建構函式,一次自定義拷貝建構函式,兩次解構函式。兩個物件的指標成員所指記憶體不同。

總結:淺拷貝只是對指標的拷貝,拷貝後兩個指標指向同一個記憶體空間,深拷貝不但對指標進行拷貝,而且對指標指向的內容進行拷貝,經深拷貝後的指標是指向兩個不同地址的指標。