C 中自增和自減操作符的過載

2021-05-07 23:02:09 字數 811 閱讀 8738

自增(自減)的前字尾操作符由於沒有帶引數,所以過載的時候要區別開來處理,具體的做法是給字尾操作符號乙個int 型的形參,這樣編譯器會自動傳遞實參0過去。

實現的原則是一切向int看齊

class upint ;

upint i;

++i;                                     // calls i.operator++();

i++;                                     // calls i.operator++(0);

--i;                                     // calls i.operator--();

i--;                                     // calls i.operator--(0);

既然引用被定義成乙個左值,這就允許乙個很特殊的習慣,那就是在完成某任務時,可以將對函式的呼叫放在=的左手邊

實現++i的時候要返回引用型別,這樣就++i=0;就有正確的結果

// prefix form: increment and fetch

upint& upint::operator++()

實現i++的時候要呼叫++i的實現,利於**的維護,要注意的是需要定義乙個物件獲取oldvalue並返回

返回const 是為了確保i++++這種操作會報錯

// postfix form: fetch and increment

const upint upint::operator++(int)

// fetched

過載自增和自減操作符

對於 和 這兩個一元運算子,存在前置和後置的問題,在定義時必須有所區分。1 用成員函式的形式來進行過載 如果 為前增量運算子時,過載函式的一般格式為 type classname operator 如果 為後增量運算子時,過載函式的一般格式為 type classname operator int ...

c 中自增 和自減 操作符

自增 和自減 操作符為物件加1 或減1 操作提供了方便簡短的實現方式。它們有前置和後置兩種使用形式。到目前為止,我們已經使用過前自增操作,該操作使其運算元加1,操作結果是修改後的值。同理,前自減操作使其運算元減 1。這兩種操作符的後置形式同樣對其運算元加 1 或減 1 但操作後產生運算元原來的 未修...

自增 和自減 操作符

自增操作符和自減操作符經常要在我們自定義的類型別中使用到,而使用時經常會出現問題。現把自己在學習的過程中的 拿出來看一下,也是c primer中的例子如下 ifndef check ptr define check ptr include using namespace std class chec...