直接上代码
//前置++
T& operator++()
{
this = this + 1; //执行递增
return *this;
}
//后置++
T operator++(int) //占位符,表示后置++
{
T tmp = this;
this = this + 1; //执行递增
return tmp; //返回临时值
}
这里也很好解释了为什么后置++在感觉上是在语句执行完后才进行递增,其实在执行过程中只是对临时值进行处理,原有值已经递增了。
注意:
为什么在前置++时要实现返回引用,而后置++时却不用引用返回。
1.若前置++时不使用引用返回,当++(++a)时,之后求得的a只是进行自增了一次,而外面的++却没有作用。因为外面的++只是对一个临时值进行加加,而不是a本身。
2.后置++返回的本身就是一个临时值,在函数结束时就会被销毁。因此对临时返回值进行引用没有意义。