左值有实际的内存位置对应,右值是临时的,右值不能被赋值,也不能被引用(&),但可以创建常量引用
++i是左值 可以写++i=5 ; int & ri=++i;
i++是右值 不能写i++=5; int & ri=i++; 但可以写const int & ri=i++; 个人理解这样会创建新的存储区域。
示例程序
#include
void _cdecl f1(const int& v1, const int& v2)
{
std::cout << v1 << ' ';
std::cout << v2 << ' ';
}
void f2(int & v, int & v1){
v++;
std::cout< std::cout< }
int main (int argc, char* argv[])
{
int i=0;
++i=5;
i++=5;
f1 (++i,i++);
int t=0;
f2(++t,t);
std::cout<
return 0;
}