(1)reference variable(rv) 主要用處是作為方程的形式參數,使用rv 可以直接對原數據進行操作而不是該數據的拷貝,節省了時間和空間,尤其是對於結構體以及類的一個對象來說,對於普通類型數據來說,傳值調用是不錯的選擇。
(2)使用 type & name 的形式定義一個引用變量,參考《c++ premier plus》上的例子,
int rats;
int & rodents = rats; (int & means “reference to an int variable”)
定義了一個rodents,它是指向rat的引用變量,初始化以後,rats and rodents有相同的值,指向相同的地方,可以互換使用,通俗的說,就是“一個東西,兩種叫法”。
(3)rv必須在聲明的時候初始化,初始化以後,指向的地方不再變化,相當於const 類型的指針,後續的賦值只能改變其值,不能改變地址。譬如
int & rodents = rats; 相當於
int * const pr = &rats;
(4)當函數(function)的形參(formal argument)為指向const 類型的rv,編譯器會在以下兩種情況下產生臨時變量,
(5)C++ 11 標准引入了新的稱為“右值引用(rvalue reference)”的語法,因此原來的引用現在稱為“左值引用(lvalue reference)”
(6)函數返回引用與返回值這兩種方式,有什麼區別?
對於“返回值”這種返回方式,首先return語句後的對象,會被拷貝到一個臨時內存中,然後改臨時內存中的數據在被拷貝到調用函數的相應對象中,但是如果是“返回引用”,return語句後的對象直接拷貝到調用函數相應的對象中,更快。
(7)const 類型的引用返回,有什麼用?
使用const 類型的引用返回,可以避免對返回值進行修改