将单目运算符“++”重载为成员函数形式

来源:互联网 发布:三国志10全武将数据 编辑:程序博客网 时间:2024/05/17 19:23

对于前置单目运算符,重载函数没有形参,对于后置单目运算符,重载函数有一个int型形参。这个int型参数在函数体中并不使用,纯粹是用来区别前置与后置,因此参数表中可以只给出类型名,没有参数名。

#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;}

程序运行结果为: