第八周项目 二 【项目2-Time类中的运算符重载】
来源:互联网 发布:c语言可以编安卓软件吗 编辑:程序博客网 时间:2024/05/29 08:50
【项目2-Time类中的运算符重载】
实现Time类中的运算符重载。
提示1:并不是所有比较运算重载函数都很复杂
甚至可以如下面的代码般简练:
实现Time类中的运算符重载。
提示1:并不是所有比较运算重载函数都很复杂
甚至可以如下面的代码般简练:
提示2:并不是所有复合赋值运算重载函数都需要很复杂
提示3:请自行编制用于测试的main()函数,有些结果不必依赖display()函数,提倡用单步执行查看结果
提示3:请自行编制用于测试的main()函数,有些结果不必依赖display()函数,提倡用单步执行查看结果
/**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:15CTime 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;}运行结果:
学习心得:只有当自己一步一步慢慢体会才知道自己还有很多东西是你不知道的,
我们还要好好加油!
0 0
- 第八周项目二----time类中的运算符重载
- 第八周 项目二:Time类中的运算符重载
- 第八周项目二time类中的运算符重载
- 第八周项目二-Time类中的运算符重载
- 第八周项目二 Time类中的运算符重载
- 第八周项目二:Time类中的运算符重载
- 第八周 项目二:Time类中的运算符重载
- 第八周项目二 Time类中的运算符重载
- 第八周 项目二 Time类中的运算符重载
- 第八周项目二 Time类中的运算符重载
- 第八周 项目二 Time类中的运算符重载
- 第八周 项目二 Time类中的运算符重载
- 第八周项目二Time类中的运算符重载
- 第八周项目二:Time类中的运算符重载
- 第八周项目二--Time类中的运算符重载
- 第八周项目二 Time类中的运算符重载
- 第八周项目二-Time类中的运算符重载
- 第八周 项目二 Time类中的运算符重载
- Performance 之我的起步[一]
- POj1915
- JUnit测试案例
- 数据挖掘概论
- java底层分页使用
- 第八周项目 二 【项目2-Time类中的运算符重载】
- shell编程判断字符串是否相等
- SSH框架整合模板配置文件
- HDU_1285_确定比赛名次(拓扑排序)
- 容斥原理【模板】
- hdu3829—二分图求最大独立集
- iOS开发 贝塞尔曲线UIBezierPath
- Unity项目中UI同学需知的程序相关要点
- 不要被工具束缚了思想