對於前置單目運算符,重載函數沒有形參,對於後置單目運算符,重載函數有一個int型形參。這個int型參數在函數體中並不使用,純粹是用來區別前置與後置,所以參數表中能夠只給出類型名,沒有參數名。ios
#include <iostream> using namespace std; class Clock //類定義 { public: Clock(int NewH=0,int NewM=0,int NewS=0); void ShowTime(); Clock& operator ++ (); //前置單目運算符重載 Clock operator ++(int); //後置單目運算符重載 private: int Hour,Minute,Second; }; Clock::Clock(int NewH,int NewM,int NewS) { if(0<=NewH && NewH<24 && 0<=NewM && NewM<60 && 0<=NewS && NewS<60) { Hour=NewH; Minute=NewM; Second=NewS; } else cout<<"Time error!"<<endl; } void Clock::ShowTime() { cout<<Hour<<":"<<Minute<<":"<<Second<<endl; } Clock& Clock::operator ++ () { Second++; if(Second>=60) { Second=Second-60; Minute++; if(Minute>=60) { Minute=Minute-60; Hour++; Hour=Hour%24; } } return *this; } Clock Clock::operator ++ (int) { Clock old= *this; ++(*this); return old; } int main() { Clock myClock(23,59,59); cout<<"First time output: "; myClock.ShowTime(); cout<<"Show myClock++: "; myClock++; myClock.ShowTime(); cout<<"Show ++myClock: "; (++myClock).ShowTime(); return 0; }
程序運行結果爲:函數