class string{
public:
string(const char *str=NULL);
string(const string& str); //copy構造函數的參數為什么是引用呢? 我相信大家都懂的!
string& operator=(const string & str); //賦值函數為什么返回值是引用呢?
~string();
};
如果返回值時, return *this后馬上就調用拷貝構造函數。
但是萬一由於沒有定義拷貝構造函數 ,就會調用默認的拷貝構造函數。
我們知道調用默認的拷貝構造函數時當在類中有指針時就會出錯(淺拷貝)。
所以如果你不用引用做返回時 就必須定義自定義的拷貝構造函數。
當然咯 有指針成員時 必須要注意 自定義 拷貝構造了
其實還是為了提高效率 和 減少零時對象的生成 不調用 拷貝構造函數!