当对operator ++
函数进行重载时,需要自增操作符的前缀和后缀形式有不同的参数。
但是不论是自增或自减的前缀还是后缀都只有一个参数。
为了解决这个语言问题,
C++规定后缀形式有一个int类型参数,当函数被调用时,编译器传递一个0做为int参数的值给该函数.
UPInt& operator++() {
*this += 1;
return *this;
}
const UPInt operator++(int) {
UPInt old = *this;
++(*this);
return old;
}
注意:
- 如果重载,注意后缀形式要返回const,避免
i++++
,基本类型int不允许这样,且连续后缀自加时第二次自加改变的是第一次自加返回的值 - 前缀形式效率更高