标签:
/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *dood luck *文件名称:d.cpp *作 者:张旺华 *完成日期:2015年5月7日 *版 本 号:v1.0 * */ #include <iostream> using namespace std; class CTime { private: int hour; // 时 int minute; // 分 int second; // 秒 public: CTime(int h=0,int m=0,int s=0); void setTime(int h,int m,int s) { hour=h; minute=m; second=s; } void display(); friend CTime change(CTime &t); //二目的比较运算符重载 bool operator > (CTime &t); bool operator < (CTime &t); bool operator >= (CTime &t); bool operator <= (CTime &t); bool operator == (CTime &t); bool operator != (CTime &t); //二目的加减运算符的重载 //返回t规定的时、分、秒后的时间 //例t1(8,20,25),t2(11,20,50),t1+t2为19:41:15 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::display() { cout<<hour<<":"<<minute<<":"<<second<<endl; } CTime change(CTime &t) { while(t.second<0) { t.minute--; t.second+=60; } while(t.minute<0) { t.hour--; t.minute+=60; } while(t.hour<0) { t.hour+=24; } t.minute+=t.second/60; t.second%=60; t.hour+=t.minute/60; t.minute%=60; t.hour%=24; return t; } 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; 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; return false; } bool CTime::operator >= (CTime &t) { return !(*this<t); } bool CTime::operator <= (CTime &t) { return !(*this>t); } bool CTime::operator == (CTime &t) { return (*this>=t&&*this<=t); } bool CTime::operator != (CTime &t) { return !(*this>=t&&*this<=t); } //二目的加减运算符的重载 //返回t规定的时、分、秒后的时间 //例t1(8,20,25),t2(11,20,50),t1+t2为19:41:15 CTime CTime::operator+(CTime &t) { CTime p; p.second=second+t.second; p.minute=minute+t.minute; p.hour=hour+t.hour; return change(p); } CTime CTime::operator-(CTime &t)//对照+理解 { CTime p; p.second=second-t.second; p.minute=minute-t.minute; p.hour=hour-t.hour; return change(p); } CTime CTime::operator+(int s)//返回s秒后的时间 { CTime p=*this; p.second+=s; return change(p); } CTime CTime::operator-(int s)//返回s秒前的时间 { CTime p=*this; p.second-=s; return change(p); } //二目赋值运算符的重载 CTime CTime::operator+=(CTime &t) { second=second+t.second; minute=minute+t.minute; hour=hour+t.hour; return change(*this); } CTime CTime::operator-=(CTime &t) { second=second-t.second; minute=minute-t.minute; hour=hour-t.hour; return change(*this); } CTime CTime::operator+=(int s)//返回s秒后的时间 { second+=s; return change(*this); } CTime CTime::operator-=(int s)//返回s秒前的时间 { second-=s; return change(*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; }运行结果:
标签:
原文地址:http://blog.csdn.net/wh201458501106/article/details/45565631