Time类中的运算符重载

来源:互联网 发布:软件销售 编辑:程序博客网 时间:2024/05/22 02:20
/*    *程序的版权和版本声明部分          * Copyright (c)2013, 烟台大学计算机学院学生        * All rightsreserved.         * 文件名称:Time .cpp       * 作    者:  田凤        *完成日期:2013年4月22日      * 版本号: v1.0                 * 输入描述: 输入时间* 问题描述:略         * 输出:输出时间*代码:#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:15    CTime 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)//判断时间t1>t2{ if(hour>t.hour)  return true; else if(hour==t.hour&&minute>t.minute)  return true; else if(hour==t.hour&&minute==t.minute&&second>t.second)  return true; else  return false;}bool CTime::operator <(CTime &t)//判断时间t1<t2{ if(hour<t.hour)  return true; else if(hour==t.hour&&minute<t.minute)  return true; else if(hour==t.hour&&minute==t.minute&&second<t.second)  return true; else  return false;}bool CTime::operator >= (CTime &t)//判断时间t1>=t2{ if(hour>t.hour)  return true; else if(hour==t.hour&&minute>t.minute)  return true; else if(hour==t.hour&&minute==t.minute&&second>=t.second)  return true; else  return false;}bool CTime::operator <= (CTime &t)//判断时间t1<=t2{ if(hour<t.hour)  return true; else if(hour==t.hour&&minute<t.minute)  return true; else if(hour==t.hour&&minute==t.minute&&second<=t.second)  return true; else  return false;}bool CTime::operator == (CTime &t)//判断时间t1==t2{ if(hour==t.hour&&minute==t.minute&&second==t.second)  return true; else  return false;}bool CTime::operator != (CTime &t)//判断时间t1!=t2{ if(hour==t.hour&&minute==t.minute&&second==t.second)  return false; else  return true;}CTime CTime::operator+(CTime &c)//计算时间和{ int h,m,s; h=hour+c.hour; m=minute+c.minute; s=second+c.second; if(s>60)    {        s-=60;//(s=s%60)        m++;  //增加分钟    }    if(m>60)    {        m-=60; //(m=m%60)        h++;   //增加小时    } if(h>24) {  h-=24; //(h=h%24) } CTime T(h,m,s); return T;}CTime CTime::operator-(CTime &c)//计算时间差{ int h,m,s; h=hour-c.hour; m=minute-c.minute; s=second-c.second; if(s<0)    {        s+=60;//(s=60+s)        m--;  //减分钟    }    if(m<0)    {        m+=60; //(m=60+m)        h--;   //增加小时    } if(h<0) {  h+=24; } CTime T(h,m,s); return T;}CTime CTime::operator+(int s)//返回s秒后的时间{ int ss=s%60; int mm=(s/60)%60; int hh=s/3600; CTime T(hh,mm,ss); return *this+T;}CTime CTime::operator-(int s)//返回s秒前的时间{ int ss=s%60;    int mm=(s/60)%60;    int hh=s/3600; CTime T(hh,mm,ss);    return *this-T;}CTime CTime::operator++(int)//后置++,下一秒{ CTime t=*this;    *this=*this+1;    return t;}CTime CTime::operator++()//前置++,下一秒{ *this=*this+1;    return *this;}CTime CTime::operator--(int)//后置--,前一秒{ CTime t=*this;    *this=*this-1;    return t;}CTime CTime::operator--()//前置--,前一秒{ *this=*this-1;    return *this;}CTime CTime::operator+=(CTime &c){ *this=*this+c;    return *this;}CTime CTime::operator-=(CTime &c){ *this=*this-c;    return *this;}CTime CTime::operator+=(int s){ *this=*this+s;    return *this;}CTime CTime::operator-=(int s){ *this=*this-s;    return *this;}int main(){    CTime t1(8,20,25),t2(11,20,50),t;    cout<<"t1为:";    t1.display();    cout<<"t2为:";    t2.display();    cout<<"下面比较两个时间大小:\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;    t=t1+t2; cout<<"t1+t2="; t.display(); t=t1-t2; cout<<"t1-t2="; t.display(); t=t1+1000; cout<<"t1+1000="; t.display(); t=t1-1000; cout<<"t1-1000="; t.display(); t=++t1; cout<<"前置++为:"; t.display(); t=t1++; cout<<"后置++为:"; t.display(); t=--t1; cout<<"前置--为:"; t.display(); t=t1--; cout<<"后置--为:"; t.display(); t1+=t2; cout<<"t1+=t2为:"; t1.display(); t1-=t2; cout<<"t1-=t2为:"; t1.display(); t1+=1000; cout<<"t1+=1000为:"; t1.display(); t1-=1000; cout<<"t1-=1000为:"; t1.display(); return 0;} 

*运行结果:

*心得体会:运行有点不明白,在前置,后置的那个地方~~