C++的深拷貝和淺拷貝 淺拷貝也叫位拷貝(bitwise assignment),意思就是將一個對象的記憶體映像按位原封不動的複製給另一個對象。如果欄位是值類型的,則對該欄位執行逐位複製;如果欄位是引用類型,則複製引用但不複製引用的對象。 如果改變目標對象中引用型欄位的值他將反映在原是對象中,也就是說 ...
C++的深拷貝和淺拷貝
淺拷貝也叫位拷貝(bitwise assignment),意思就是將一個對象的記憶體映像按位原封不動的複製給另一個對象。
如果欄位是值類型的,則對該欄位執行逐位複製;如果欄位是引用類型,則複製引用但不複製引用的對象。
如果改變目標對象中引用型欄位的值他將反映在原是對象中,也就是說原始對象中對應的欄位也會發生變化。因為它們指向的是同一份記憶體。
深拷貝也叫值拷貝(value assignment),它會將一個對象的值全部複製給另一個對象,包括引用類型的對象里的值。
如果沒有自定義拷貝構造函數和賦值函數,則系統會創建預設的複製構造函數和賦值函數,但系統創建的預設函數只會執行“位拷貝”。
如果一個類擁有資源,當這個類的對象發生複製過程的時候,資源重新分配,這個過程就是深拷貝,反之,沒有重新分配資源,就是淺拷貝。
這是參考的網頁:
http://blog.sina.com.cn/s/blog_a2aa00d70101gpvj.html