關於前 和後 的區別

2021-09-22 12:34:08 字數 656 閱讀 4771

關於前++和後++的區別,其實 很多人都清楚,比如 你知道i++是先用i,然後在讓i+1,然後++i是先對i+1,然後在去使用i。

好了,這就是他們簡單的區別了,但是 實際上,i++呼叫了++i。

說了這麼多i++和++i,我想你都應該頭暈了,給乙個例子吧

#include

class a

a operator ++(int)      //後++

};int main(int argc, const char * ar**)

因為我不知道怎麼過載int的++,所以只能寫乙個類這樣了,所以 你會看到在main函式中呼叫很奇怪

這裡,我寫了乙個類a,過載了兩個++,乙個多了乙個引數int,那麼 我告訴你 多乙個int的那個就是你熟悉的 i++(後++),而沒有引數的 就是 前++。

我們逐行分析這個**,第乙個operate是前++,他做了一件事情,吧自己的private變數i+1了,然後返回*this,你可能會疑惑 *this是什麼,實際上就是乙個 a的例項變數

接下去我們看 第二個operate,也就是後++,他做了3件事,第一件 儲存乙份this,也就是相當於把this拷貝乙份,把裡面的資料都拷貝一次給乙個新的變數叫做t,然後this去呼叫前++,這樣吧this的i加1,之後return的是t,也就是return的是那個被拷貝的那乙份

關於 前 和 後 的效率問題

我在寫這篇部落格之前也是被一些文章所誤導,認為 i的效率比i 的效率高,每次都是使用前置的 雖然操作沒錯,但是在認識上有錯誤,所以我把自己錯誤認識的經歷分享出來,希望能夠對和我有同樣錯誤的人一些幫助。對於計算機內建的資料型別,現在的編譯器水平比較高,比如 i和i 沒有任何的區別,我們可以通過檢視彙編...

前 和後 的實現

前置 type operator 後置 const type operator int 為了編譯器區分前置和後置 c 規定字尾形式有乙個int型別引數 當函式被呼叫時,編譯器傳遞乙個0做為int引數的值給該函式。不這樣規定,無法區分,因為都僅以自身物件為入參。下面是乙個簡單的例子 class cin...

功放音量調節原理 關於前級和后級功放的區別

關於前級和后級功放的區別 前級和后級功放的區別 都是功放,作用卻不同!前級功放的專業叫法是 前置放大器 也是整套器材中對音色影響最大的部分 它是提供合適的音訊電平訊號,調節音質的器材 俗稱前置放大器,接在音源和功率放大器之間 后級功放的專業叫法是 純後級功放 這才是真正的功放部分,它對動態和低頻控制...