天天看點

【C++】淺拷貝和深拷貝的差別

淺拷貝:(也可以叫做影子拷貝或指針拷貝)隻是對指針的拷貝,拷貝後兩個指針指向同一個記憶體空間。(知識進行簡單的指派)(成員變量中有指針考慮實作深拷貝)

【C++】淺拷貝和深拷貝的差別

淺拷貝就是拷貝指向原來對象的指針,是對象的引用計數+1,可以了解為建立了一個新的指向原來對象的指針而已,并沒有開辟新的記憶體空間.這就例如用一間房間的鑰匙A配了一枚新的鑰匙B,兩枚鑰匙能且僅能開這間房子的鑰匙.

深拷貝: 不但對指針進行拷貝,對指針的内容也進行了拷貝。深拷貝後的指針是指向兩個不同位址的指針。

【C++】淺拷貝和深拷貝的差別

   深拷貝就是重生成一個值和原來對象一模一樣的新對象,拷貝後兩者内有什麼關系,互不影響,互不幹涉.這就例如:仿照A房間的樣式建立了B房間一樣。

總結:

淺拷貝就是指針拷貝,深拷貝就是内容拷貝。

本質差別在于:

      ①是否影響原來對象的引用計數

      ②是否開辟新的記憶體空間,即是否生成新的對象

繼續閱讀