//前置++
T& operator++()
{
this = this + 1;
return *this;
}
//後置++
T operator++(int)
{
T tmp = this;
this = this + 1;
return tmp;
}
這裏也很好解釋了爲什麼後置++在感覺上是在語句執行完後才進行遞增,其實在執行過程中只是對臨時值進行處理,原有值已經遞增了。
注意:
爲什麼在前置++時要實現返回引用,而後置++時卻不用引用返回。
1.若前置++時不使用引用返回,當++(++a)時,之後求得的a只是進行自增了一次,而外面的++卻沒有作用。因爲外面的++只是對一個臨時值進行加加,而不是a本身。
2.後置++返回的本身就是一個臨時值,在函數結束時就會被銷燬。因此對臨時返回值進行引用沒有意義
原文鏈接:https://blog.csdn.net/shungry/article/details/86679425