- /*
- *Copyright (c) 2015,烟台大学计算机学院
- *All rights reserved.
- *文件名称:text.cpp
- *作者:李德彪
- *完成日期:2015年5月16日
- *版本号:v1.0
- *
- *问题描述: 实现time类的运算符重载
- *输入描述: 无
- *程序输出: 求time类运算符重载后的结果
- */
- #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 &t);
- CTime operator -(CTime &t);
- CTime operator +(int s);
- CTime operator -(int s);
- CTime &operator +=(CTime &c);
- CTime &operator -=(CTime &c);
- CTime &operator +=(int s);
- CTime &operator -=(int s);
- CTime operator ++(int );
- CTime operator ++();
- CTime operator --(int );
- CTime operator --();
- };
- CTime::CTime (int h,int m,int s):hour(h),minute(m),second(s)
- {
- }
- void CTime::setTime(int h,int m,int s)
- {
- minute=m;
- hour=h;
- second=s;
- }
- void CTime::display()
- {
- cout<<hour<<":"<<minute<<":"<<second<<endl;
- }
- bool CTime::operator >(CTime &t)
- {
- if(hour>t.hour)return true;
- if(hour<t.hour)return false;
- if(minute>t.minute)return true;
- if(minute<t.minute)return false;
- if(second>t.second)return true;
- if(second<t.second)return false;
- }
- bool CTime::operator <(CTime &t)
- {
- if(hour>t.hour)return false;
- if(hour<t.hour)return true;
- if(minute>t.minute)return false;
- if(minute<t.minute)return true;
- if(second>t.second)return false;
- if(second<t.second)return true;
- }
- bool CTime::operator >=(CTime &t)
- {
- if(*this<t)return false;
- return true;
- }
- bool CTime::operator <=(CTime &t)
- {
- if(*this>t)return false;
- return true;
- }
- bool CTime::operator ==(CTime &t)
- {
- if(*this<t||*this>t)return false;
- return true;
- }
- bool CTime::operator !=(CTime &t)
- {
- if(*this>t||*this<t)return true;
- return false;
- }
- //当两个不规范的时间相加时可以用此方法
- CTime CTime::operator +(CTime &t)
- {
- int h,m,s;
- h=hour+t.hour;
- m=minute+t.minute;
- s=second+t.second;
- if(s>=60){
- s=s%60;
- m=m+s/60;
- }
- if(m>=60){
- m=m%60;
- h=h+m/60;
- }
- if(h>=24)
- h=h%24;
- CTime tt(h,m,s);
- return tt;
- }
- //当两个规范的时间相减时可以用此方法
- CTime CTime::operator -(CTime &t)
- {
- int h,m,s;
- s=second-t.second;
- m=minute-t.minute;
- h=hour-t.hour;
- if (s<0)
- {
- s+=60;
- m--;
- }
- if (m<0)
- {
- m+=60;
- h--;
- }
- if (h<0) h+=24;
- CTime tt(h,m,s);
- return tt;
- }
- CTime CTime::operator +(int s)
- {
- int ss=s%60;
- int mm=(s/60)%60;
- int hh=s/3600;
- CTime t0(hh,mm,ss);
- return *this+t0;
- }
- CTime CTime::operator -(int s)
- {
- int ss=s%60;
- int mm=(s/60)%60;
- int hh=s/3600;
- CTime t0(hh,mm,ss);
- return *this-t0;
- }
- 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;
- }
- 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;
- }
- int main()
- {
- CTime t1(12,22,31),t2(19,20,55),t;
- cout<<"t1为:";
- t1.display();
- cout<<"t2为:";
- t2.display();
- 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;
- t=t1-t2;
- t=t1+3000;
- t=t1-7000;
- t1+=t2;
- t1-=t2;
- t1+=3000;
- t1-=7000;
- return 0;
- }