class Triangular_iterator
{
public:
Triangular_iterator( int index ) : _index( index-1 ){} //***
bool operator==( const Triangular_iterator& ) const;
bool operator!=( const Triangular_iterator& ) const;
int operator*() const;
Triangular_iterator& operator++(); // prefix version
Triangular_iterator operator++( int ); // postfix version
private:
void check_integrity() const;
int _index;
};
operator++() //前置版本
{ // prefix instance
++_index;
check_integrity();
return *this;
}
inline Triangular_iterator Triangular_iterator::
operator++( int ) //后置版本
{ // postfix instance
Triangular_iterator tmp = *this;
++_index;
check_integrity();
return tmp;
}
我的问题:
1.后置版本的++运算为什么要返回一个临时对象?
2.后置版本是否是新建了一个Triangular_iterator并将运算符的调用对象复制,那么为什么没有重载=运算符就能运算成功?
3.后置版本中的++_index到底是哪个对象的_index,是tmp的还是this的,最后返回的临时对象中的_index+1了吗?