1.兩個拷貝之間主要是用於對象之間的拷貝! 2.區別 沒指針: 深拷貝和淺拷貝沒什麼區別; 有指針: 淺拷貝:即對象的預設拷貝函數,只是將指針的地址拷貝給對象,兩個變數同時指向一個地址,這樣在析構的時候必然會導致程式崩潰; 深拷貝:即要自定義拷貝函數,將指針new一段新記憶體保存起來;這樣析構也不會崩 ...
1.兩個拷貝之間主要是用於對象之間的拷貝!
2.區別
沒指針:
深拷貝和淺拷貝沒什麼區別;
有指針:
淺拷貝:即對象的預設拷貝函數,只是將指針的地址拷貝給對象,兩個變數同時指向一個地址,這樣在析構的時候必然會導致程式崩潰;
1 class A 2 { 3 public: 4 A() 5 { 6 m_Data = new char[100]; 7 } 8 ~A() 9 { 10 delete []m_Data; 11 m_Data = NULL; 12 } 13 14 protected: 15 private: 16 char* m_Data; 17 }; 18 19 int _tmain(int argc, _TCHAR* argv[]) 20 { 21 A a; 22 A b(a); 23 24 return 0; 25
深拷貝:即要自定義拷貝函數,將指針new一段新記憶體保存起來;這樣析構也不會崩潰;