重載自增或者自減操作符
//該類是一個指向數(shù)組的指針 class CheckedPtr { public: //構(gòu)造函數(shù):必須綁定一個數(shù)組對象 CheckedPtr(int *b,int *e):beg(b),end(e),curr(b){} //重構(gòu)前自增操作符 CheckedPtr& operator++(); //重構(gòu)前自減運算符 CheckedPtr& operator--(); //重載后自增運算符:通過調(diào)用參數(shù)與前自增運算符區(qū)別開來 const CheckedPtr operator++(int); private: int *beg; int *end; int *curr; };
//前自增和前自減
CheckedPtr& CheckedPtr::operator++() { if(curr == end) throw out_of_range("increment past the end of CheckedPtr"); ++curr; return *this; } CheckedPtr& CheckedPtr::operator--() { if(curr == beg) throw out_of_range("decrement past the beginning of CheckedPtr"); --curr; return *this; }
//后自增
CheckedPtr CheckedPtr::operator++(int) { //保存當(dāng)前值 CheckedPtr ret=*this; //調(diào)用前自增來實現(xiàn)后自增 ++(*this); //返回當(dāng)前值 return ret; }
//應(yīng)用重載后的操作符
CheckedPtr a,b,c;
b=++a;//使用的是不帶參數(shù)的操作符++重載函數(shù)
c=a++;//使用的是帶int參數(shù)的操作符++重載函數(shù)
|