前缀形式的++操作符出现在操作数的前面。
例如: ++a;
说明: 操作数的值被相加,而表达式的值就是操作数增加后的值。
举例: int a, b = 1;
a = ++b; //b增加至2,a得到的值为2
后缀形式的++操作符出现在操作数的后面。
例如: a++;
说明: 操作数的值仍被相加,而表达式的值是操作数增加前的值。
举例: int a, b = 1;
a = b++; //b增加至2,a得到的值为1
显然,根据操作符的位置,我们很容易记住这个规则:
在操作数之前的操作符(++b)在变量值在被使用之前增加它的值;在操作数之后的操作符(b++)在变量值被使用之后才增加的值。--操作符的工作原理与此相同,只是它所执行的是减值操作而非增值操作。
自增运算符重载
由于前缀自增与后缀自增在如果通过运算符重载在形式上相同,都为
以Date类为例 Date& operator++(Date &)(全局函数)/ Date& operator++( )(成员函数)无法区分。
故人为规定前缀自增与后缀自增运算符的表达形式:
由于编译器必须能够识别出前缀自增与后缀自增,故人为规定了用一个 int 区分,并没有实际的含义。
前缀自增示例
Calendar& Calendar::operator++(){
tick();
return *this;
}
后缀自增示例
Calendar Calendar::operator++(int){
Calendar temp = *this;
tick();
return temp;
}