自增 和自減 操作符

2021-06-07 07:49:01 字數 837 閱讀 9501

自增操作符和自減操作符經常要在我們自定義的類型別中使用到,而使用時經常會出現問題。現把自己在學習的過程中的**拿出來看一下,也是c++ primer中的例子如下:

#ifndef  _check_ptr_

#define  _check_ptr_

#include

using namespace std;

class checkptr

;#endif

#include "checkptr.h"

checkptr::checkptr(int *b,int *e):beg(b),end(e),cur(b)

// 前向自增操作符

checkptr& checkptr::operator ++()

;checkptr parr(ia,ia+5);

++parr;

parr.printcurvalue();

parr++;

parr.printcurvalue();

return 0;

}在上面**中,可以看到在前向操作符和字尾操作符的處理時,有需要注意的點:

1.字首和字尾兩種形式,首先在類的宣告中不同,字尾比字首多了乙個形參(int),而這個形參本身是沒有值的,編譯前預設賦給0,其目的

只是為了區分開字首和字尾這兩種表達形式。

2.前置返回的是物件的引用,即物件本身,做完自增或自減後返回*this,即返回本物件的引用。

3.後置操作符返回的是本物件的乙個副本,它返回的是乙個舊值。而物件本身this進行自增和自減不變。這樣操作都是為了和內建操作符一致。

4.因為這些操作符改變了物件的狀態,所以一般定義為類的成員函式。

自增和自減操作符

毫無疑問,自增 和自減 操作符為物件加1或減1操作提供了方便簡短的實現方式。程式設計中的宗旨 簡潔即美 它們有前置和後置兩種使用形式 int i 0,j j i j 1,i 1 prefix yields incremented value j i j 1,i 2 postfix yields un...

過載自增和自減操作符

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

關於自增自減操作符

c c 中自增自減運算子相信是不少人的乙個困擾,這個問題也一直困擾著我,今天再次翻開書本來看了看,有了些新的體會,所以在這裡記錄下來,同時也與那些像我一樣被困擾的人分享,程式設計大牛可以繞道了,或者有什麼不對的地方請大牛們指正。以 為例,如下程式輸出結果是什麼 int a 0,j 1 a j cou...