区别前置/后置操作符
对于从C转业者都知道
(以++举例)
前置: 累加后取出
后置: 取出后累加
在重载 ++ ,-- 操作符的时候,为了避免前置跟后置的区别, 让后置有一个int的传参。
class UPint{
public:
UPint& operator++(); //前置
const UPint operator++(int); //后置
};
UPint i;
++i; //调用i.operator();
i++; //调用i.operator(int);
请注意:
1.后置返回的值为const的对象。
2.前置返回为reference。
后置返回const的原因:
如果没有const 可以这么用:
i++++;
相当于:
i.operator(0).operator(0);
operator++的第二个动作调用施行于第一个的返回对象。
两个原因不期望这么做:
1.这么写的人估计是希望能够i加两次。而实际是只进行了一次。
2.这和内建类型行为不一致。
一条无上宝典:一旦有疑虑,试试ints行为如何并遵循之
所以最好的方法就是➕const