lvalue rvalue, , , "".int i = 10;
i : , . , , i 0x1000. , , , 10. , . :int j; j = i;
( ), : i ( 10, 0x1000) j.
:++i; , i (0x1000) 1
.i = 20; 0x1000 20.
i, 20 , . , : ++20; 20 = 10; C++ . , , .
, , , , , lvalue rvalue. lvalue , (left-value); , (right-value). C C++ lvalue . lvalue locator value.
: (). , , . C C++ . C++ lvalue , . C , , function designator.
, lvalue/rvalue / , . :char a [10];
i, ++i, *&i, a[i] lvalue, :10,i+1,i++ rvalue; modifiable lvalues, non-modifiable lvalues.
, lvalue, . , t "const int& t = i;", t, lvalue, , . non-modifiable lvalues; modifiable lvalues, .
lvalue-to-rvalue conversion
, lvalue- , (, ), . .., i lvalue (" "), rvalue (""). C++ lvalue rvalue (lvalue-to-rvalue conversion).
|
|
lvalue/rvalue
, e lvalue, , .. "e =..." , e lvalue. . - lvalues. , , , lvalue, '='. - rvalues lvalues. , C++ rvalues , rvalues '=':class C { };
int main()
{
C() = C(); // OK
return 0;
}
, , C++. (), '=', C++ rvalue,
rvalue:
, . , , ; +, -. *, / ..; int() C(); ..
(&) rvalue .
++, --.
.
.
lvalue:
, , non-modifiable const-. , , ..
. non-modifiable const-. , , ; , ; ..
(*) lvalue ; non-modifiable const-.
++, --.
non-modifiable lvalue; rvalue .
non-modifiable lvalue; rvalue .
non-modifiable lvalue; rvalue char/wchar_t.