新手求指導 關於兩個函數不太理解 復制構造的是同一個內存地址嗎 為什麼要重載賦值運算符
賦值運算符和復制構造函數都是用已存在的B對象來創建另一個對象A。不同之處在於:賦值運算符處理兩個已有對象,即賦值前B應該是存在的;復制構造函數是生成一個全新的對象,即調用復制構造函數之前A不存在。
CTemp a(b); //復制構造函數,C++風格的初始化
CTemp a=b; //仍然是復制構造函數,不過這種風格只是為了與C兼容,與上面的效果一樣
在這之前a不存在,或者說還未構造好。
CTemp a;
a=b; //賦值運算符
在這之前a已經通過默認構造函數構造完成。
而之所以要自定義這些,是因為防止有指針時淺拷貝造成錯誤。具體可百度 rule of three原則