區別前置 後置操作符

2022-05-08 10:12:10 字數 733 閱讀 3530

對於從c轉業者都知道

(以++舉例)

前置: 累加後取出

後置: 取出後累加

在過載 ++ ,-- 操作符的時候,為了避免前置跟後置的區別, 讓後置有乙個int的傳參。

class upint{

public:

upint& operator++(); //前置

const upint operator++(int); //後置

upint    i;

++i; //呼叫i.operator();

i++; //呼叫i.operator(int);

請注意:

1.後置返回的值為const的物件。

2.前置返回為reference。

後置返回const的原因:

如果沒有const 可以這麼用:

i++++;

相當於:

i.operator(0).operator(0);
operator++的第二個動作呼叫施行於第乙個的返回物件。

兩個原因不期望這麼做:

1.這麼寫的人估計是希望能夠i加兩次。而實際是只進行了一次。

2.這和內建型別行為不一致。

一條無上寶典:一旦有疑慮,試試ints行為如何並遵循之

所以最好的方法就是➕const

前置操作符和後置操作符

操作符可以被過載 全域性函式和成員函式均可以進行過載 過載前置 操作符不需要額外的引數 過載後置 操作符需要乙個int型別的佔位引數 來看乙個例子 include include using namespace std class test intvalue test operator test o...

40 前置操作符和後置操作符

下面的 有區別嗎?進入彙編 i i 的值作為返回值,i自增1 i i自增1,i的值作為返回值 include include using namespace std int main int value test operator 過載前置 操作符 test operator int 過載後置 操作...

40 前置操作符和後置操作符

注 部落格中內容主要來自 狄泰軟體學院 部落格僅當私人筆記使用。測試環境 ubuntu 10.10 gcc版本 9.2.0 一 值得思考的問題 1 下面的 有沒有區別?為什麼?i i 的值作為返回值,i自增1。i i自增1,i的值作為返回值test.cpp include using namespa...