第九周 项目二 Time类中的运算符重载(续)
来源:互联网 发布:php网站流量统计代码 编辑:程序博客网 时间:2024/05/16 23:35
问题及代码:
/**Copyright (c)2014,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:Project.cpp*作 者:chenqin.*完成日期:2015年5月18日*版 本 号:v1.0**问题描述:在Time类中的运算符重载基础上,定义对时间对象的自增和自减一目运算符,定义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(); friend istream &operator >>(istream &input,CTime &t); friend ostream &operator <<(ostream &output,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 operator++(int);//后置++,下一秒 CTime operator++();//前置++,下一秒 CTime operator--(int);//后置--,前一秒 CTime operator--();//前置--,前一秒};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;}istream &operator>>(istream &input,CTime &t){ char ch1,ch2; while(1) { cout<<"请输入正确格式的时间:"; cin>>t.hour>>ch1>>t.minute>>ch2>>t.second; if (ch1==':'&&ch2==':') if(t.hour>-1&&t.hour<24&&t.minute>-1&&t.minute<60&&t.second>-1 && t.second<60) break;cerr<<"时间格式错误,请重新输入:"; } return cin;}ostream &operator<<(ostream &output,CTime &t){ output<<t.hour<<":"<<t.minute<<":"<<t.second; return output;}bool CTime::operator > (CTime &t){ if(hour>t.hour) return true; else return false; if(minute>t.minute) return true; else return false; if(second>t.second) return true; else return false;}bool CTime::operator < (CTime &t){ if(hour<t.hour) return true; else return false; if(minute<t.minute) return true; else return false; if(second<t.second) return true; else return false;}bool CTime::operator >= (CTime &t){ if(*this<t) return false; else return true;}bool CTime::operator <= (CTime &t){ if(*this>t) return false; else return true;}bool CTime::operator == (CTime &t){ if(*this>t||*this<t) return false; else return true;}bool CTime::operator != (CTime &t){ if(*this==t) return false; else return true;}CTime CTime::operator+(CTime &t){ CTime c; c.hour=hour+t.hour; c.minute=minute+t.minute; c.second=second+t.second; if(c.second>59) { c.second-=60; c.minute+=c.minute; } if(c.minute>59) { c.minute-=60; c.hour+=c.hour; } if(c.hour>23) { c.hour-=24; } return c;}CTime CTime::operator+(int s){ second+=s; if(second>59) { second-=60; minute+=minute; } if(minute>59) { minute-=60; hour+=hour; } if(hour>23) { hour-=24; } return CTime(hour,minute,second+s);}CTime CTime::operator-(CTime &t){ CTime c; c.hour=hour-t.hour; c.minute=minute-t.minute; c.second=second-t.second; if(c.second<0) { c.second+=60; c.minute-=c.minute; } if(minute<0) { c.minute+=60; c.hour-=c.hour; } if(hour<0) c.hour=c.hour+24; return CTime(c.hour,c.minute,c.second);}CTime CTime::operator-(int s){ second-=s; if(second<0) { second+=60; minute-=minute; } if(minute<0) { minute+=60; hour-=hour; } if(hour<0) { hour+=24; } return CTime(hour,minute,second);}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){ *this=*this+s; return *this;}CTime CTime::operator-=(int s){ *this=*this-s; 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--(int){ CTime t=*this; *this=*this-1; return t;}CTime CTime::operator--(){ *this=*this-1; return *this;}int main(){ CTime t1,t2,t; cout <<"t1为"; cin>>t1; cout <<"t2为"; cin>>t2; cout <<"二目的比较运算符重载"<<endl; if(t1>t2) cout <<"t1>t2"<<endl; if(t1<t2) cout <<"t1<t2"<<endl; if(t1>=t2) cout <<"t1>=2"<<endl; if(t1<=t2) cout<<"t1<=t2"<<endl; if(t1==t2) cout<<"t1==t2"<<endl; if(t1!=t2) cout<<"t1!=t2"<<endl; cout<<"t=t1++"<<endl; t=t1++; cout<<"t= "<<t<<" t1= "<<t1<<endl; cout<<"t=++t1"<<endl; t=++t1; cout<<"t= "<<t<<" t1= "<<t1<<endl; cout <<"二目加减运算符重载"<<endl; t=t1+t2; t=t1-t2; t=t1+100; t=t1-100; cout <<"二目赋值运算符的重载"<<endl; t+=t2; t-=t2; t+=100; t-=100; return 0;}
运行结果:
0 0
- 第九周项目二Time类中的运算符重载(续)(1)
- 第九周项目二Time类中的运算符重载(续)(2)
- 2015年第九周项目二:Time类中的运算符重载(续)(1)
- 第九周 项目二:Time类中的运算符重载(续)
- 第九周 项目二-Time类中的运算符重载(续)
- 15第九周项目二——Time类中的运算符的重载(续)
- 第九周项目二--Time类中的运算符重载(续)
- 第九周 课后实践:项目二——Time类中的运算符重载(续)
- 第九周项目二——Time类中的运算符重载(续)
- 第九周项目二:Time类中的运算符重载(续)
- 第九周 项目二 Time类中的运算符重载(续)
- 第九周项目二 Time类中的运算符重载(续)
- 第九周项目二-Time类中的运算符重载(续)
- 第九周 项目二 Time类中的运算符重载(续)
- 第九周 项目二--Time类中的运算符重载(续)
- 第九周项目二 Time类中的运算符重载(续)-(2)定义Time类的>>和<<
- 第九周项目二 Time类中的运算符重载(续)(2)定义Time类的>>和<<
- 第九周项目二:Time类中的运算符重载(续)
- infobright安装与配置
- Android EditText的设置
- 作业四:SQL数据库及C#操作SQL数据库——Winform程序
- 【STL源码剖析读书笔记】【第5章】关联式容器之set、map、multiset和multimap
- Linux搜索命令 which find locate
- 第九周 项目二 Time类中的运算符重载(续)
- 截取字符串的部分字符方法
- 第九周 项目4-我的向量类
- Linux shell 文本处理工具
- DLog打印出打印的数据在什么方法内打印的
- 图像处理中的跨度(stride)
- ubuntu14.04下github的安装与使用
- ld:file not found: /Users/hx/Library/Developer/Xcode/DerivedDat
- 基于源码开机蓝牙一直扫描并自动连接指定的蓝牙设备