c++中賦值運算符重載為什么要用引用做返回值?


 

class string{

public:

string(const char *str=NULL);

string(const string& str);     //copy構造函數的參數為什么是引用呢?  我相信大家都懂的!

string& operator=(const string & str); //賦值函數為什么返回值是引用呢?

~string();

};

如果返回值時, return *this后馬上就調用拷貝構造函數。


但是萬一由於沒有定義拷貝構造函數  ,就會調用默認的拷貝構造函數。
我們知道調用默認的拷貝構造函數時當在類中有指針時就會出錯(淺拷貝)。


所以如果你不用引用做返回時      就必須定義自定義的拷貝構造函數。

 

 

當然咯  有指針成員時 必須要注意    自定義  拷貝構造了

 

其實還是為了提高效率 和 減少零時對象的生成   不調用 拷貝構造函數!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM