以下のように記述すると,前置インクリメントとして扱われてしまいエラーとなる.
class Foo {
public:
void operator ++() {
/* code */
}
};
int main(void) {
Foo foo;
foo++; // => エラー
// ++foo; と書く必要がある!!
return 0;
}
そこで,int型のダミーの引数をとってやることによって,後置インクリメントとして扱うことができるようになる.
class Foo {
public:
void operator ++(int) {
/* code */
}
};
int main(void) {
Foo foo;
foo++; // => エラーにならない!!
return 0;
}
なお,デクリメントについても同様である.