1.操作符重载时如何区分前后缀?
为了解决这个问题,C++规定后缀形式有一个int类型参数,但是这个参数从不使用,函数调用时,编译器传递0为实参值。
如:
class UPInt
{
public:
UPInt& operator++(); // ++ 前缀
const UPInt operator++(int); // ++ 后缀
UPInt& operator--(); // -- 前缀
const UPInt operator--(int); // -- 后缀
UPInt& operator+=(int); // += 操作符,UPInts
// 与ints 相运算
...
};
2.为何后缀返回const类型?
考虑情形:
3.前缀、后缀的具体实现:
4.其他相关:
可以看到,前++效率较高,因为后++需要有个临时变量。
后++的实现之所以调用前++,是因为对于不同的数据结构,只需要修改前++的实现即可保证前后缀++具有统一的计算规则。