拷貝構造函數:
用一個已經存在的對象來生成一個相同類型的新對象。(淺拷貝)
默認的拷貝構造函數:
如果自定義了拷貝構造函數,編譯器就不在生成默認的拷貝構造函數。
如果沒有自定義拷貝構造函數,但在代碼中用到了拷貝構造函數,編譯器會生成默認的拷貝構造函數。
深拷貝&淺拷貝:
系統默認的拷貝構造函數是淺拷貝,類中含有指針類型的變量,須自定義拷貝構造函數用深拷貝來實現。
淺拷貝只是對指針的拷貝,拷貝后兩個指針指向同一個內存空間,所指向的空間內容并沒有復制,而是由兩個對象共用。深拷貝不但對指針進行拷貝,而且對指針指向的內容進行拷貝,經深拷貝后的指針是指向兩個不同地址的指針。
如圖:
思考:
當對象中存在指針成員時,為什么需要自己實現拷貝構造函數?如果不,會出現怎樣的問題?
看代碼:
#include<iostream>
class CGoods
{
p