可能重複:
Is it allowed to name the parameter in postfix operator ++?超載後增量運算結果值在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的影響。接下來,我雖然使用+=
使用參數n
的右手邊,但你會發現,簡單地調用++
沒有運營商(如通常那樣),給人以零和位置是不遞增。
基本上,這是我應該擔心的事情嗎?如果是這樣,我該如何檢測用戶是否真的想要0,或者如果默認行爲(a++
)是有意的,我應該增加1?
相關:http://stackoverflow.com/questions/6094732/ – 2011-05-23 19:40:12
真的很有趣,有一天有兩個關於這個問題。 – 2011-05-23 19:40:35
@ Space_C0wb0y:實際上是重複的。 – 2011-05-23 19:42:01