1. 程式人生 > >15.賦值運算子為什麼返回類的引用?不是引用怎麼辦?

15.賦值運算子為什麼返回類的引用?不是引用怎麼辦?

賦值運算子為什麼返回類的引用?不是引用怎麼辦?

class string{

public:

string(const char *str=NULL);

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

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

~string();

};

如果返回的是值時, return *this 後馬上就呼叫拷貝建構函式。 但是如果沒有定義拷貝建構函式  ,就會呼叫預設的拷貝建構函式。 我們知道呼叫預設的拷貝建構函式時當在類中有指標時可能會出錯(淺拷貝)。

當在連續賦值的場景中,所以如果你不用引用做返回時,會呼叫拷貝建構函式,而且必須定義自定義的拷貝建構函式。