Time类中的运算符重载

输入代码:

/** Copyright (c) 2015, 烟台大学计算机学院 * All rights reserved. * 文件名称:sum123.cpp * 作 者:林海云 * 完成日期:2015年4月28日 * 版 本 号:v2.0 * * 问题描述: 实现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);//返回s秒后的时间CTime operator-(int s);//返回s秒前的时间//二目赋值运算符函数的定义CTime operator+=(CTime &c);CTime operator-=(CTime &c);CTime operator+=(int s);//返回s秒后的时间CTime operator-=(int s);//返回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){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 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(*this<t)return false ;elsereturn true;}bool CTime::operator <= (CTime &t){if(*this>t)return false;elsereturn true;}bool CTime::operator == (CTime &t){if(*this>t||*this<t)return false;elsereturn true;}bool CTime::operator != (CTime &t){if(*this==t)return false;elsereturn true;}//二目运算符的重载CTime CTime:: operator+(CTime &t)// 计算时间之和{int h,m,s;s=second+t.second;m=minute+t.minute;h=hour+t.hour;if(s>59){s%=60;m++;}if(m>60){m%=60;h++;}if(h>23){h-=24;}CTime t0(h,m,s);return t0;}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 t0(h,m,s);return t0;}CTime CTime:: operator+(int s)//返回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)//返回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)//返回s秒后的时间{*this=*this+s;return *this;}CTime CTime::operator-=(int s)//返回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;cout<<endl;t=t1+t2;t.display();t=t1-t2;t.display();t=t1+2000;t.display();t=t1-5000;t.display();t1+=t2;t1.display();t1-=t2;t1.display();t1+=2000;t1.display();t1-=5000;t1.display();return 0;}

运行结果:

,最美不过偷瞄你是你忽然转头,看见你的微笑

Time类中的运算符重载

相关文章:

你感兴趣的文章:

标签云: