如果程序使用到类似迭代器的功能,往往需要重载++ 和-- 运算符。参考下面实例程序,可以发现,如果声明为operator++则只能在程序中使用前置的++运算符。所以如果需要使用后置的运算符,必须声明为operator++(int notused)。这里notused是站位作用。参照c/c++运算符特性,后置运算符返回自增或自减之前的值,前置运算符返回自增或自减之后的结构。所以定义入下面程序所示。
{
ptr++;
return *this;
}
Iter operator--()
{
ptr--;
return *this;
}
Iter operator++(int notused)
{
T *tmp=ptr;
ptr++;
return Iter<T>(tmp,begin,end);
}
Iter operator--(int notused)
{
T *tmp=ptr;
ptr--;
return Iter<T>(tmp,begin,end);
}
通过重载运算符之后既可以使用*it++操作。到底是前置还是后置参照c++的运算符特性。