区别前置/后置操作符

对于从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

posted @ 2017-01-29 20:54  水蒸蛋不好吃  阅读(174)  评论(0编辑  收藏  举报