a++的运算结果并不是a这个变量的引用,而是一个临时变量,其值为i的值,所以你无法进行以下运算:
a++=5; 甚至编译器不允许你对一个临时变量重新赋值,上面的表达式会引起编译错误 。
左值,说得通俗一点,就是可以出现在表达式左边的值(等号左边),可以被改变。
可以简单的这么理解(通过C++语法)
你看看前、后++分别是怎样重载的
比如A类中重载两个++吧
A& operator ++ ()
{
++ A.data;
return A;
}
A& operator ++ (int)
{
temp = A.data;
++ A.data;
return temp;
}
后一个是后++
返回的是一个临时变量
当然不能做左值啊
++a返回的是a的引用..
a++返回的一个临时变量的引用..