1. 程式人生 > >c++中賦值運算符重載為什麽要用引用做返回值?

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

font round opera () const pub copy構造函數 per size

class string{

public:

string(const char *str=NULL);

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

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

~string();

};

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


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


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

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