问题及代码:
/*
*Copyright (c) 2015,烟台大学计算机学院
*All rights reserved.
*文件名称:text.cpp
*作者:徐健
*完成日期:2015年5月15日
*版本号: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;
}
运行结果: