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 再調用賦值操作符。增加了一次拷貝的代價。