1. 程式人生 > >C++中賦值操作符為什麼要返回引用型別

C++中賦值操作符為什麼要返回引用型別

class Test

{

    Test& operator= (const Test& t)

           {

          }

}

這個是我們熟悉的賦值操作符函式的格式,但是該函式為什麼非得要返回一個引用呢。

查閱了很多資料感覺這種解釋比較靠譜:

Test a,b,c;

a=b=c

這裡存在連續賦值,這是符合C++的語法規範的。如果賦值操作符返回一個引用型別,倒不是說  b=c 返回的引用變數直接賦值給a,畢竟a不是引用型別。

該過程實際上是 b=c 返回一個引用temp,然後 a=temp 再次呼叫賦值操作符。這裡存在兩次呼叫賦值操作符。

如果賦值操作符不是返回的一個引用那麼 在b=c呼叫複製操作符之後就會再次呼叫拷貝建構函式返回一個臨時物件temp 然後 a=temp 再呼叫賦值操作符。增加了一次拷貝的代價。