重载自增或者自减操作符
//该类是一个指向数组的指针
class CheckedPtr
{
public:
//构造函数:必须绑定一个数组对象
CheckedPtr(int *b,int *e):beg(b),end(e),curr(b){}
//重构前自增操作符
CheckedPtr& operator++();
//重构前自减运算符
CheckedPtr& operator--();
//重载后自增运算符:通过调用参数与前自增运算符区别开来
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)
{
//保存当前值
CheckedPtr ret=*this;
//调用前自增来实现后自增
++(*this);
//返回当前值
return ret;
}
//应用重载后的操作符
CheckedPtr a,b,c;
b=++a;//使用的是不带参数的操作符++重载函数
c=a++;//使用的是带int参数的操作符++重载函数
联系客服