前置++ 和 後置++

//前置++
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章