對於從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...