0

可能重复:
是否允许在后缀运算符 ++ 中命名参数?

我创建了一个对象来保存在内部保持当前位置的对象列表,所以我认为这是一个重载前置和后置增量运算符的好地方,它可以通过边界检查有效地增加这个内部位置。

我注意到的是,当您调用++对象时,参数是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?

4

2 回答 2

0

运算符中的 int 是否由编译器放在那里。它指示您是否具有前缀或后缀运算符。(++一个一个++)

于 2011-05-23T19:41:08.237 回答
0

您应该忽略该参数。

于 2011-05-23T19:41:10.733 回答