當前位置:編程學習大全網 - 編程軟體 - C語言 什麽叫做左值?右值?

C語言 什麽叫做左值?右值?

左值?,就是指可以被取地址的表達式。簡單的說,可以出現在等號左邊的就是左值。比如:

另外也可以有不是變量的左值:

這裏,getRef()返回的是壹個全局變量的引用,它的值存在固定的位置,因此是壹個左值。

右值?,則指的是沒有名字的值,它們只出現表達式的計算過程中,也就是等號的右邊。例如:

getName()返回壹個在函數中構造的字符串。妳可以把它的值賦給壹個變量,但是它是壹個臨時對象,我們並不知道它的值放在哪裏。所以,getName()是壹個右值。

說清楚了什麽是左值和右值,那麽什麽是右值引用呢?右值引用?是C++11中新引入,是壹種只綁定與右值的引用。區別與左值引用(&),它用&&來表示。與左值引用壹樣,它也可以是const或者是非const的,但是我們基本不會在實際應用中用到const的右值引用(這個大家可以思考壹下為什麽)。讓我們來看壹些例子:

從例子中,我們可以看到const的左值引用可以綁定到右值,非const的左值引用不能綁定到右值,右值引用可以綁定到右值。那麽右值引用怎麽幫助我們解決問題呢?讓我們接著看右值引用在作為函數參數時的行為。假如我有下面兩個函數:

第壹個printReference函數是用const左值引用作為參數,從前面的例子中我們知道它既可以接受左值也可以接受右值。但是當有了第二個printReference的用右值引用的重載之後,右值將優先綁定到第二個printReference。這點我們可以通過如下代碼來驗證:

輸出為:

  • 上一篇:購物系統編程使用java在esplse上
  • 下一篇:為什麽蜂房是六邊形的?
  • copyright 2024編程學習大全網