歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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

Copyright © Linux教程網 All Rights Reserved