可能重复:
Is it allowed to name the parameter in postfix operator ++?
我创建了一个对象来保存一个在内部维护当前位置的对象列表,所以我认为这是重载前后增量运算符的好地方,它通过边界检查有效地增加了这个内部位置。
我注意到,当您在对象上调用++
时,参数为0
。
测试代码:
#include <stdio.h>
class A {
public:
A& operator++(int n) { printf("%d ", n); return *this; }
};
int main() {
A a;
a++;
a.operator++(0);
a.operator++(1);
a.operator++(10);
return 0;
}
返回0 0 1 10
。据我所知,这是正常行为。所以,它让我重新思考operator++
应该如何运作。以前,如果边界检查通过,我只是在我的内部位置变量上调用++
。但无论输入参数是什么,这都会增加1的影响。接下来,我使用+=
使用参数n
作为右侧,但正如您将注意到的那样,只需在没有运算符的情况下调用++
(按惯例),零,位置不递增。
基本上,这是我应该担心的吗?如果是这样,我如何检测用户是否真的想要0,或者是否有默认行为(a++
)并且我应该增加1?
答案 0 :(得分:0)
编译器将运算符中的int放在那里或不放在那里。它指示您是否具有前缀或后缀运算符。 (++ a a ++)
答案 1 :(得分:0)
你应该忽略参数。