可能重复:
是否允许在后缀运算符 ++ 中命名参数?
我创建了一个对象来保存在内部保持当前位置的对象列表,所以我认为这是一个重载前置和后置增量运算符的好地方,它可以通过边界检查有效地增加这个内部位置。
我注意到的是,当您调用++
对象时,参数是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 的影响。接下来,我虽然使用+=
using 参数n
作为右手边,但正如您会注意到的那样,只需++
不使用运算符(按照惯例)调用,就会给出零并且位置不会增加。
基本上,这是我应该担心的事情吗?如果是这样,我如何检测用户是否真的想要 0,或者如果默认行为 ( a++
) 是有意的,我应该增加 1?