对于前置单目运算符,重载函数没有形参,对于后置单目运算符,重载函数有一个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; }
程序运行结果为:函数