3.1 左值右值與常量性(lvalue,rvalue & constant)
首先要搞清楚的是,什麼是左值,什麼是右值。這裏給出左值右值的定義:
1、左值是可以出現在等號(=)左邊的值,右值是隻能出現在等號右邊的值。
2、左值是可讀可寫的值,右值是隻讀的值。
3、左值有地址,右值沒有地址。
根據左值右值的第二定義,值的左右性就是值的常量性——常量是右值,非常量是左值。比如:
1=1;//Error
這個複製操作在C++中是語法錯誤,MSVC給出的錯誤提示爲“error C2106: '=' : left operand must be l-value”,就是說’=’的左操作數必須是一個左值,而字面常數1是一個右值。可見,嚴格的區分左值右值可以從語法分析的角度找出程序的邏輯錯誤。
根據第二定義,一個左值也是一個右值 …