2026-08-27
ticker.cpp
struct Ticker {
int count = 0;
Ticker& operator++() {
// write this: prefix form - increment count, return *this
}
Ticker operator++(int) {
// write this: postfix form - return the value from before incrementing
}
};
Tickerに前置・後置それぞれのoperator++を実装してください。前置はcountをインクリメントして*thisへの参照を返し、後置はインクリメントする前の状態のコピーを返します(引数のintは後置版であることを示すためだけのダミーです)。
Reference
Ticker& operator++() {
++count;
return *this;
}
Ticker operator++(int) {
Ticker old = *this;
++count;
return old;
}
前置版は自分自身を書き換えてから参照を返すだけなのでコピーが発生しません。後置版は「インクリメントする前」の状態を返す必要があるため、書き換える前に自分自身のコピーoldを取っておき、それを返します — 引数のintはオーバーロード解決のためだけの目印で、実際には使いません。イテレータのような重い型では、この余分なコピーのぶんだけ後置よりも前置のほうが速いことが多く、++itを優先する習慣の理由になっています。これは参考実装であり、唯一の正解ではありません。