Time类中运算符重载
2013-04-19 14:53
141 查看
/* * 程序的版权和版本声明部分 * Copyright (c)2012, 烟台大学计算机学院学生 * All rightsreserved. * 文件名称: object.cpp * 作者:赵 洋 * 完成日期: 2013年4 月19 日 * 版本号: v1.0 * 输入描述:无 * 问题描述:通过重载运算符实现时间处理 * 程序输出: */ #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:15 CTime 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); CTime operator-=(int 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*3600+minute*60+second >t.hour*3600+t.minute*60+t.second) { return true; } else return false; } bool CTime::operator < (CTime &t) { if(hour*3600+minute*60+second <t.hour*3600+t.minute*60+t.second) { return true; } else return false; } bool CTime::operator >= (CTime &t) { if(hour*3600+minute*60+second >=t.hour*3600+t.minute*60+t.second) { return true; } else return false; } bool CTime::operator <= (CTime &t) { if(hour*3600+minute*60+second <=t.hour*3600+t.minute*60+t.second) { return true; } else return false; } bool CTime::operator == (CTime &t) { if(hour==t.hour&&minute==t.minute&&second==t.second) { return true; } else return false; } bool CTime::operator != (CTime &t) { if(hour!=t.hour&&minute!=t.minute&&second!=t.second) { return true; } else return false; } CTime CTime::operator+(CTime &c) { CTime t1; int time; time = hour*3600+minute*60+second+(c.hour*3600+c.minute*60+c.second); t1.hour=time/3600; if(t1.hour>=24) { t1.hour-=24; } time =time%3600; t1.minute =time/60; time = time%60; t1.second =time; return t1; } CTime CTime::operator-(CTime &c) { CTime t1; int time; time = hour*3600+minute*60+second-(c.hour*3600+c.minute*60+c.second); if(time<0) { time = -time; } t1.hour=time/3600; if(t1.hour>=24) { t1.hour-=24; } time =time%3600; t1.minute =time/60; time = time%60; t1.second =time; return t1; } CTime CTime::operator+(int s) { CTime t1; int time; time=hour*3600+minute*60+second+s; t1.hour=time/3600; if(t1.hour>=24) { t1.hour-=24; } time =time%3600; t1.minute =time/60; time = time%60; t1.second =time; return t1; } CTime CTime::operator-(int s) { CTime t1; int time; time=hour*3600+minute*60+second-s; t1.hour=time/3600; if(t1.hour>=24) { t1.hour-=24; } time =time%3600; t1.minute =time/60; time = time%60; t1.second =time; return t1; } CTime CTime::operator++( int) { CTime t1; while(second>=60) { second-=60; ++minute; } while(minute>=60) { minute-=60; ++hour; } while(hour>23) { hour-=24; } return *this;//返回的对象为改之前的,但实际对象已经改变 } CTime CTime::operator++( ) { if(++second>=60) { second-=60; ++minute; } if(minute>=60) { minute-=60; ++hour; } if(hour>=24) { hour-=24; } return *this; } CTime CTime::operator--( int) { second--; while(second<=0) { second+=60; --minute; } while(minute<=0) { minute+=60; --hour; } while(hour<0) { hour+=24; } return *this;//返回的对象为改之前的,但实际对象已经改变 } CTime CTime::operator--( ) { if(--second<=0) { second+=60; --minute; } if(minute<=0) { minute+=60; --hour; } if(hour<=0) { hour+=23; } return *this; } CTime CTime::operator+=(CTime &c) { int time; time = hour*3600+minute*60+second+(c.hour*3600+c.minute*60+c.second); hour=time/3600; time =time%3600; minute =time/60; time = time%60; second =time; return *this; } CTime CTime::operator-=(CTime &c) { int time; time = hour*3600+minute*60+second-(c.hour*3600+c.minute*60+c.second); if(time<0) { time=-time; } hour=time/3600; while(hour>=24) { hour-=24; } time =time%3600; minute =time/60; time = time%60; second =time; return *this; } CTime CTime::operator+=(int s) { second+=s; while(second>=60) { second-=60; ++minute; } while(minute>=60) { minute-=60; ++hour; } while(hour>=24) { hour-=24; } return *this; } CTime CTime::operator-=(int s) { int time; time=hour*3600+minute*60+second-s; if(time<0) { time=(-time); } hour=time/3600; if(hour>=24) { hour-=24; } time =time%3600; minute =time/60; time = time%60; second =time; 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; cout<<"t1+t2 ="; t.display(); t = t1-t2; cout<<"t1-t2 ="; t.display(); t = t1+15; cout<<"t1+15s ="; t.display(); t = t1-15; cout<<"t1-15s ="; t.display(); t = t1++; cout<<"t1++ ="; t.display(); t = ++t1; cout<<"++t1 ="; t.display(); t = t1--; cout<<"t1-- ="; t.display(); t = --t1; cout<<"--t1 ="; t.display(); t1+=t2; cout<<"t1+=t2 ="; t1.display(); t1-=t2; cout<<"t1-=t2 ="; t1.display(); t1 +=24; cout<<"t1+=24s ="; t1.display(); t1 -=55; cout<<"t1-=55s ="; t1.display(); }
运行结果:
相关文章推荐
- Time类中的运算符重载
- 第九周项目二——Time类中的运算符重载(利用输入输出运算符重载)
- 第8周项目2-Time类中的运算符重载
- 第9周项目2-Time类中的运算符重载(续)
- 第12周第二项目——Time类的运算(运算符重载)
- 第十二周上机时间项目——项目2-Time类中的运算符重载
- 项目二-Time类定义Time类中的<<和>>运算符重载
- 第八周项目2-Time类的运算符重载
- 第八周项目2-Time类中的运算符重载
- 第八周项目2-Time类中的运算符重载
- 2015年大一下第7周项目2-Time类中的运算符重载(续)
- 第九周 课后实践:项目二——Time类中的运算符重载(续)
- 第九周项目2——Time类中的运算符重载(续)
- 第九周项目二——Time类中的运算符重载(续)
- 第九周 【项目2-Time类中的运算符重载(续)】
- 第九周 项目2-Time类中的运算符重载(2)
- Time类中的运算符重载
- 第12周项目2——Time类中的运算符重载
- Time类中的运算符重载
- 第8周上机任务,time类中的运算符重载