a++与++a
//前缀形式,如++a
int &int::operator++()
{
*this+=1;
return *this;
}
//后缀形式,如a++,由于返回的是副本,所以设定了const int,因为给oldvalue赋值是危险的,函数出栈动作结束后,oldvalue就消失了。
const int int::operator++(int)
{
int oldvalue=*this;
++(*this);
return oldvalue;
}
也就是说
#include <cstdio>
int main(){
int a=4;
printf("%d",++a);
return 0;
}
将输出5;
#include <cstdio>
int main(){
int a=4;
printf("%d",a++);
return 0;
}
将输出4
a++:加号后置 输出自增以前的数据;
++a:加号后置 输出自增以后的数据。