operator++
プリインクリメントとポストインクリメントをオーバーロードできますか? つまり、呼び出しSampleObject++
て++SampleObject
正しい結果が得られます。
class CSample {
public:
int m_iValue; // just to directly fetch inside main()
CSample() : m_iValue(0) {}
CSample(int val) : m_iValue(val) {}
// Overloading ++ for Pre-Increment
int /*CSample& */ operator++() { // can also adopt to return CSample&
++(*this).m_iValue;
return m_iValue; /*(*this); */
}
// Overloading ++ for Post-Increment
/* int operator++() {
CSample temp = *this;
++(*this).m_iValue;
return temp.m_iValue; /* temp; */
} */
};
戻り値の型だけに基づいて関数をオーバーロードすることはできません。また、許容されたとしても、オーバーロード解決のあいまいさのために問題は解決しません。
組み込み型をユーザー定義型のように動作させるために演算子のオーバーロードが提供されているのに、独自の型のプリインクリメントとポストインクリメントを同時に利用できないのはなぜでしょうか?