项目2-Time类中的运算符重载

来源:互联网 发布:java简单聊天室源代码 编辑:程序博客网 时间:2024/06/01 18:24
/*   * Copyright (c) 2013, 烟台大学计算机学院   * All rights reserved.   * 文件名称:text.cpp   * 作者:胡颖   * 完成日期:2013年4月24日   * 版本号:v1.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 &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);//返回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) // 判断时间t1>t2{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;return false;}bool CTime::operator < (CTime &t)// 判断时间t1<t2{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;return false;}bool CTime::operator == (CTime &t)// 判断时间t1==t2{if (*this<t || *this>t) return false;return true;}bool CTime::operator != (CTime &t) // 判断时间t1!=t2{if (*this==t) return false;return true;}bool CTime::operator >= (CTime &t)// 判断时间t1>=t2{if (*this<t) return false;return true;}bool CTime::operator <= (CTime &t) // 判断时间t1<=t2{if (*this>t) return false;return true;}//二目运算符的重载// 计算时间之和, 返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15CTime 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>59){m-=60;h++;}if (h>23) h-=24;CTime t0(h,m,s);return t0;}//返回s秒后的时间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 &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;}//返回s秒前的时间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)//后置++,下一秒{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)//返回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++;    cout<<"t为:";t.display();    t=++t1;    cout<<"t为:";t.display();    t1--;    cout<<"t1为:";t1.display();    --t1;    cout<<"t1为:";t1.display();    t=t1+t2;    cout<<"t为:";t.display();    t=t1-t2;    cout<<"t为:";t.display();    t=t1+45000;    cout<<"t为:";t.display();    t=t1-66000;    cout<<"t为:";t.display();    t1+=t2;    cout<<"t1为:";t1.display();    t1-=t2;    cout<<"t1为:";t1.display();    t1+=4500;    cout<<"t1为:";t1.display();    t1-=6600;    cout<<"t1为:";t1.display();}

运算结果:
原创粉丝点击