【发布时间】:2011-05-23 19:38:44
【问题描述】:
可能重复:
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?
【问题讨论】:
-
一天有两个问题,真的很有趣。
-
@Space_C0wb0y:实际上是重复的。
-
@Space_C0wb0y:太搞笑了!一些工作中的聪明人直接使用运算符来证明一个观点,所以现在我试图通过让代码处理它来证明一个。
-
我想知道他是不是看到了这个问题并决定搞笑。
标签: c++ post-increment