todo

c/c++左值,右值与应用(l-value,r-value and reference)

up:2015-08-23 12:52:24 edit:2015-08-23 12:52:50 view:1211

左值有实际的内存位置对应,右值是临时的,右值不能被赋值,也不能被引用(&),但可以创建常量引用

++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;
}



not in sinaapp