因为在标准中,并没有规定复合表达式中,相同运算等级的运算顺序是从左边开始还是从右边开始。例如这个例子,从左边开始,就是3+3+4 = 10;从右边开始就成了4+4+4=12了。所以,除非你是在出考试试卷,否则不要在你的程序中出现同一个变量两次以上自增/自减操作符。这除了破坏你程序可读性,增加维护难度外,没有多少帮助。
三。重载++/--操作符。
根据上面的分析,在做++/--操作符重载时,注意返回值的类型。例如:如果自定义了一个类A(含有一个数据成员x)。
那么对于前置,首先就是对它的数据成员++/--,然后再返回它的引用,这样,才是左值表达式,如下面的代码:
A& A::operator++()
{
++x; //--x
return *this ;
}
对于后置,则如下:显然还回的是一个A的临时实例。而且,初始化值是未增加的x,结束后x加了1.
A A::operator++(int )
{
return A(this->x++);
}