C++引用變量學習


版權所有,轉載請注明來源

(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,編譯器會在以下兩種情況下產生臨時變量

  • 當實參類型正確,但不是“左值(lvalue)”
  • 當實參類型不正確,但是可以轉換為正確類型

    (5)C++ 11 標准引入了新的稱為“右值引用(rvalue reference)”的語法,因此原來的引用現在稱為“左值引用(lvalue reference)”

    (6)函數返回引用與返回值這兩種方式,有什么區別?

    對於“返回值”這種返回方式,首先return語句后的對象,會被拷貝到一個臨時內存中,然后改臨時內存中的數據在被拷貝到調用函數的相應對象中,但是如果是“返回引用”,return語句后的對象直接拷貝到調用函數相應的對象中,更快。

    (7)const 類型的引用返回,有什么用?

    使用const 類型的引用返回,可以避免對返回值進行修改

    (8)不要返回一個存儲類型只是local的變量的引用,因為當程序執行完該變量所在區域,該變量將不再存在,因此這是錯誤的設計例子

int & test (int & x)

{

     int temp;

     temp = x;

     return temp;

}

上述例子中,temp在test函數執行完畢后,將不再存在,因此返回temp的引用,程序將會出錯奔潰


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM