设计CTime类,并且在CTime类中使用运算符重载

来源:互联网 发布:mac删除快捷键 编辑:程序博客网 时间:2024/06/07 18:38

程序代码:

#include <iostream>using namespace std;class CTime//时间类{private:unsigned short int hour;    //时unsigned short int minute;  //分unsigned short int second;  //秒public:CTime(int h=0,int m=0,int s=0);//构造函数void setTime(int h,int m,int s);//设置时间void display();//显示时间    //比较运算符(二目)的重载bool operator > (CTime &t);bool operator < (CTime &t);bool operator >= (CTime &t);bool operator <= (CTime &t);bool operator == (CTime &t);bool operator != (CTime &t);    //二目运算符的重载CTime operator+(CTime &c);//返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15CTime operator-(CTime &c);//对照+理解CTime operator+(int s);//返回s秒后的时间CTime operator-(int s);//返回s秒前的时间    //一目运算符的重载CTime operator++( int);//后置++,下一秒CTime operator++();//前置++,下一秒,前置与后置返回值不一样CTime operator--( int);//后置--,前一秒CTime operator--();//前置--,前一秒    //赋值运算符的重载     CTime operator+=(CTime &c);CTime operator-=(CTime &c);CTime operator+=(int s); CTime operator-=(int s); };//初始化时间CTime::CTime(int h, int m, int s){    hour = h;    minute = m;    second = s;}//初始化时间void CTime::setTime(int h,int m,int s){    hour = h;    minute = m;    second = s;}//显示时间void CTime::display(){    cout<<hour<<':'<<minute<<':'<<second<<endl;}//比较运算符(二目)的重载bool CTime::operator > (CTime &t){    //计算时间为多少秒    int sec1 = hour * 3600 + minute * 60 + second;    int sec2 = t.hour * 3600 + t.minute * 60 + t.second;    if(sec1 > sec2)    {        return true;    }    else    {        return false;    }}bool CTime::operator < (CTime &t){    //计算时间为多少秒    int sec1 = hour * 3600 + minute * 60 + second;    int sec2 = t.hour * 3600 + t.minute * 60 + t.second;    if(sec1 < sec2)    {        return true;    }    else    {        return false;    }}bool CTime::operator >= (CTime &t){     //计算时间为多少秒    int sec1 = hour * 3600 + minute * 60 + second;    int sec2 = t.hour * 3600 + t.minute * 60 + t.second;    if(sec1 >= sec2)    {        return true;    }    else    {        return false;    }}bool CTime::operator <= (CTime &t){     //计算时间为多少秒    int sec1 = hour * 3600 + minute * 60 + second;    int sec2 = t.hour * 3600 + t.minute * 60 + t.second;    if(sec1 <= sec2)    {        return true;    }    else    {        return false;    }}bool CTime::operator == (CTime &t){     //计算时间为多少秒    int sec1 = hour * 3600 + minute * 60 + second;    int sec2 = t.hour * 3600 + t.minute * 60 + t.second;    if(sec1 == sec2)    {        return true;    }    else    {        return false;    }}bool CTime::operator != (CTime &t){     //计算时间为多少秒    int sec1 = hour * 3600 + minute * 60 + second;    int sec2 = t.hour * 3600 + t.minute * 60 + t.second;    if(sec1 != sec2)    {        return true;    }    else    {        return false;    }}//二目运算符的重载CTime CTime::operator+(CTime &c)//返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15{    //将时间化成秒数    int sec1 = hour * 3600 + minute * 60 + second;    int sec2 = c.hour * 3600 + c.minute * 60 + c.second;    //两个时间相加    int sec3 = sec1 + sec2;    CTime t1;    t1.hour = sec3 / 3600;//计算时间(时)    t1.minute = sec3 % 3600 / 60;//计算时间(分)    t1.second = sec3 % 3600 % 60;//计算时间(秒)    return t1;}CTime CTime::operator-(CTime &c)//对照+理解{     //将时间化成秒数    int sec1 = hour * 3600 + minute * 60 + second;    int sec2 = c.hour * 3600 + c.minute * 60 + c.second;    //两个时间相减    int sec3 = sec1 - sec2;    CTime t1;    t1.hour = sec3 / 3600;//计算时间(时)    t1.minute = sec3 % 3600 / 60;//计算时间(分)    t1.second = sec3 % 3600 % 60;//计算时间(秒)    return t1;}CTime CTime::operator+(int s)//返回s秒后的时间{    CTime t;        //将时间化成秒数    int sec1 = hour * 3600 + minute * 60 + second;    //计算增加s秒后的时间    int sec2 = sec1 + s;    t.hour = sec2 / 3600;//计算时间(时)    t.minute = sec2 % 3600 / 60;//计算时间(分)    t.second = sec2 % 3600 % 60;//计算时间(秒)    return t;}CTime CTime::operator-(int s)//返回s秒前的时间{      CTime t;        //将时间化成秒数    int sec1 = hour * 3600 + minute * 60 + second;    //计算减少s秒后的时间    int sec2 = sec1 - s;    t.hour = sec2 / 3600;//计算时间(时)    t.minute = sec2 % 3600 / 60;//计算时间(分)    t.second = sec2 % 3600 % 60;//计算时间(秒)    return t;}//一目运算符的重载CTime CTime::operator++( int)//后置++,如i++{    CTime t = *this;    *this = *this + 1;    return t;}CTime CTime::operator++()//前置++, 如++i;{    *this = *this + 1;    return *this;}CTime CTime::operator--( int)//后置--, 如i--{    CTime t  = *this;    *this = *this + 1;    return t;}CTime CTime::operator--()//前置--, 如--i{    *this = *this - 1;       return *this;}//两个时间相加(this是指向Time类的指针)CTime CTime::operator+=(CTime &c){    *this = *this + c;    return *this;}//两个时间相减(this是指向Time类的指针)CTime CTime::operator-=(CTime &c){    *this = *this - c;    return *this;}//增加s秒CTime CTime::operator+=(int s){    //将时间化成秒数    int sec1 = hour * 3600 + minute * 60 + second;        //计算增加s秒后的时间    int sec2 = sec1 + s;    CTime t1;    t1.hour = sec2 / 3600;//计算时间(时)    t1.minute = sec2 % 3600 / 60;//计算时间(分)    t1.second = sec2 % 3600 % 60;//计算时间(秒)    return t1;}//减少s秒CTime CTime::operator-=(int s){     //将时间化成秒数    int sec1 = hour * 3600 + minute * 60 + second;        //计算增加s秒后的时间    int sec2 = sec1 - s;    CTime t1;    t1.hour = sec2 / 3600;//计算时间(时)    t1.minute = sec2 % 3600 / 60;//计算时间(分)    t1.second = sec2 % 3600 % 60;//计算时间(秒)    return t1;}void main(){    //定义三个时间对象CTime t1(11,20,25),t2(8,40,50),t;    //显示第一个时间    cout<<"t1 = ";t1.display();    //显示第二个时间    cout<<"t2 = ";t2.display();    cout<<"\n下面比较两个时间大小:\n";if (t1>t2) cout<<"t1>t2"<<endl;if (t1<t2) cout<<"t1<t2"<<endl;if (t1==t2) cout<<"t1=t2"<<endl; if (t1!=t2) cout<<"t1≠t2"<<endl;if (t1>=t2) cout<<"t1≥t2"<<endl;if (t1<=t2) cout<<"t1≤t2"<<endl;cout<<endl;    //两个时间相加    cout<<"t1 + t2 = ";    t = t1 + t2;    t.display();        //两个时间相减    cout<<"t1 - t2 = ";    t = t1 - t2;    t.display();    //计算t1增加300秒后的时间    cout<<"t1 + 300秒 = ";    t = t1 + 300;    t.display();    //计算t1减少300秒后的时间    cout<<"t1 - 300秒 = ";    t = t1 - 300;    t.display();    cout<<endl;    cout<<"t1 = ";    t1.display();     //计算t1++    cout<<"t1++ = ";    t = t1++;    t.display();    cout<<endl;     cout<<"t1 = ";    t1.display();     //计算++t1    cout<<"++t1 = ";    t = ++t1;    t.display();    cout<<endl;    cout<<"t1 = ";    t1.display();     //计算t1--    cout<<"t1-- = ";    t = t1--;    t.display();    cout<<endl;     cout<<"t1 = ";    t1.display();     //计算--t1    cout<<"--t1 = ";    t = --t1;    t.display();    cout<<endl;    cout<<"t2 = ";    t2.display();    cout<<"t = ";    t.display();    t2 += t;    cout<<"执行 t2 += t1 后 t2 = ";    t2.display();    cout<<endl;    cout<<"t2 = ";    t2.display();    cout<<"t = ";    t.display();    t2 -= t;     cout<<"执行 t2 -= t1 后 t2 = ";    t2.display();    cout<<endl;    system("pause");}

执行结果:

1 0