1. 程式人生 > >c++ 右值左值

c++ 右值左值

左值右值

名詞

左值:lvalue,left value

右值:rvalue,right value

C語言

這兩個名詞是從C語言繼承過來的,C語言中為了幫助記憶:左值可以出現在賦值語句的左側,右值則不能。

C++

  • 在C++語言中,二者的區別就沒那麼簡單了。C++的表示式要不然就是左值,要不然就是右值,不存在黑戶。

  • 一個左值表示式的求值結果是一個物件或者一個函式,然而以常量物件為代表的某些左值實際上不能作為賦值語句的左側運算物件。此外,雖然某些表示式的求值結果是物件,但它們是右值而非左值。

  • 可以做一個簡單的歸納:當一個物件被用作右值的時候,用的是物件的值(內容),當物件被用作左值的時候,用的是物件的身份(在記憶體中的位置)。

  •  知乎看到的經典總結:左值右值的形式區分(或者稱語法區分)是能否用取地址&運算子;語義區分(即其本質涵義)在於表示式代表的是持久物件還是臨時物件。