#include namespace std {} using namespace std; class CManiac { friend CManiac operator++(CManiac& rmaniac, int); private: int m_iValue; public: CManiac() { m_iValue = 0; } // 構築時に 0 に初期化する。 operator int() { return m_iValue; } // int へのキャスト }; CManiac operator++(CManiac& rmaniac, int) { CManiac maniacOld; maniacOld.m_iValue = rmaniac.m_iValue; // 古い値を保存しておく。 rmaniac.m_iValue += 1; // 値を更新する。 return maniacOld; // 古い値を返す。 } int main() { CManiac maniac; int iValue0 = maniac; // 事前 int iValue1 = maniac++; int iValue2 = maniac; // 事後 printf("iValue0 = %d, iValue1 = %d, iValue2 = %d\n", iValue0, iValue1, iValue2); // 答えは 0、0、1 になります。 return 0; }