臨時變數 引用引數和const

2021-10-04 20:57:01 字數 1111 閱讀 8143

好久沒更了,紀念我的日語n5上冊書學成,更一篇博文。(甚是開心!!)

在現代c++中,僅當引數為const引用時,如果實參與引用引數不匹配,c++將生成臨時變數。詳細說來生成臨時變數有兩種情況:

實參的型別正確,但不是左值實參的型別不正確,但可以轉換為正確的型別

ps1.左值引數是可被引用的資料物件,例如變數、陣列元素、結構成員、引用和解除引用的指標。非左值包括字面常量(用引號引起的字串除外,它們由其位址表示)和包含多項的表示式

ps2.字面常量 包括:整形常量,字元型常量,字串常量。注意: 不存在 陣列常量,結構體常量等結構型的 字面常量 。

ps3.現在常規變數和const變數都可視為左值。常規變數屬於可修改的左值,const變數屬於不可修改的左值。

舉個栗子說明一下:

double

cube

(const

double

&ra)

double side=

3.0;

double

*pd=

&side;

double

&rd=side;

double c1=

cube

(side)

;double c2=

cube

(side+

10.0);

double c3=

cube

(7.0)

這是一段示例**。

在**中,side,*pd,rd是有名稱,double型別的資料物件,因此可以直接為其建立引用,不需要臨時變數。

7.0和side+10.0雖然型別正確,但它們沒有名稱。此時編譯器將會生成乙個臨時匿名變數,並讓ra指向他。這個臨時變數只在cube函式執行期內存在,函式執行結束後便會被編譯器刪除。

後話:現代的c++學習推薦將引用引數宣告為const資料的裡理由有三:

使用const可以避免無意中修改資料的程式設計錯誤

使用const能夠處理const和非const實參,否則將只能接收非const資料

使用const引用使函式能夠正確生成並使用臨時變數

C const引用 臨時變數 引用引數

c 引用 臨時變數 引用引數和const引用 如果實參與引用引數不匹配,c 將生成臨時變數。如果引用引數是const,則編譯器在下面兩種情況下生成臨時變數 實參型別是正確的,但不是左值 實參型別不正確,但可以轉換為正確的型別 左值引數是可被引用的資料物件,例如,變數 陣列元素 結構成員 引用和被解除...

C const引用 臨時變數 引用引數

臨時變數 引用引數和const 如果實參與引用引數不匹配,c 將生成臨時變數。現在,僅當引數是const引用,c 才允許這樣做,這是乙個新的機制。在下面這兩種情況下,c 編譯器將生成臨時變數 實參型別是正確的,但不是左值 實參型別不正確,但可以轉換為正確的型別 左值引數是可被引用的資料物件,例如,變...

引用 const引用和非const引用

引用構造了物件的乙個同義詞,是c 物件的另乙個名字。在實際程式中,引用的主要作用是作函式的形參。引用是一種復合型別1,它通過在變數名前新增 來定義。在使用引用的情況下,每一種引用型別都關聯到某一其他型別。c 不能定義引用型別的引用,但是可以定義任何其他型別的引用。int a 100 int refa...