第9周项目2-Time类中的运算符重载(续)
来源:互联网 发布:剑三小令狐伤捏脸数据 编辑:程序博客网 时间:2024/06/01 07:21
/* *All rights reserved. *文件名称:main.cpp *作 者:姜 甜 甜 *完成日期:2015年5月8日 *版 本 号: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); friend istream &operator >>(istream &in,CTime <span style="color:#ff0000;">&c); //注意引用</span> friend ostream &operator <<(ostream & out,CTime<span style="color:#ff0000;"> c);</span> //一目运算符的重载 CTime operator++(int);//后置++,下一秒 CTime operator++();//前置++,下一秒,前置与后置返回值不一样 CTime operator--( int);//后置--,前一秒 CTime operator--();//前置--,前一秒 //二目的比较运算符重载 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 &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秒前的时间};istream &operator >>(istream &in,CTime &t){ char ch1,ch2; while(1) { cout<<"intput time(hh:mm:ss) "; in>>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<<"时间格式不正确! 请重新输入\n"; } return in;}ostream &operator <<(ostream & out,CTime c){ if(c.second>59) { c.minute+=c.second/60; c.second=c.second%60; } if(c.minute>59) { c.hour+=c.minute/60; c.minute%=60; } if(c.hour>24) c.hour=c.hour/24; out<<c.hour<<":"<<c.minute<<":"<<c.second; return out;}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;}CTime CTime::operator++(){ second++; return *this;}CTime CTime::operator++(int){ CTime c=*this; *this=*this+1; return c;}CTime CTime::operator --(){ second--; return *this;}CTime CTime::operator --(int){ CTime t=*this; *this=*this-1; 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 1; else if(hour==t.hour&&minute<t.minute) return 1; else if(hour==t.hour&&minute==t.minute&&second<t.second) return 1; else return 0;}bool CTime::operator >= (CTime &t){ return !(*this<t);}bool CTime::operator <= (CTime &t){ return !(*this>t);}bool CTime::operator==(CTime &t){ if(hour==t.hour&&minute==t.minute&&second==t.second) return 1; else return 0;}bool CTime::operator != (CTime &t){ return !(*this==t);}CTime 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++; } while (h>23) h-=24; CTime t0(h,m,s); return t0;}CTime CTime::operator-(CTime &t) <span style="color:#cc0000;">//注意减法的输出</span>{ 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;}CTime CTime::operator+(int s)//返回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 s)//返回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 &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,t2,t; cout<<"t1为:"; cin>>t1; cout<<"t2为:"; cin>>t2; 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; cout<<"t1= "<<t1<<endl; cout<<"t2= "<<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<<"t1+t2= "<<t1+t2<<endl; cout<<"t1-t2= "<<t1-t2<<endl; cout<<"t1+2000= "<<t1+2000<<endl; cout<<"t1-5000= "<<t1-5000<<endl; return 0;}
重载流输入时,注意引用,不然写不上;流输出不必。
0 0
- 第9周项目2-Time类中的运算符重载(续)
- 第9周项目2-Time类中的运算符重载(续)
- 第9周项目2-Time类中的运算符重载(续)
- 第9周项目2-Time类中的运算符重载(续)
- 第9周项目2-Time类中的运算符重载续(1)
- 第9周项目2-Time类中的运算符重载(续)
- 第9周项目2 Time类中的运算符重载(续)
- 第8周-项目2-Time类中的运算符重载(续)-++、--、>>、<<
- 第8周项目2-Time类中的运算符重载(续)
- 第9周项目2-Time类的运算符重载续(2)
- 第9周项目2Time类中运算符重载(续)
- 第8周项目2TIME类运算符重载
- C++第8周项目2 -Time类中的运算符重载
- 第8周项目2:Time类中的运算符重载
- C++第8周(春)项目2 实现Time类中的运算符重载
- C++第8周(春)项目2 实现Time类中的运算符重载 .
- 第7周-项目2-Time类中的运算符重载
- 第8周项目2Time类中的运算符重载
- Struts2 返回纯字符串
- vc++ Tree Control使用总结
- CAS实现单点登录(SSO)经典完整教程
- 分页控件中的数字按钮计算方法
- LeetCode 80 Remove Duplicates from Sorted Array II
- 第9周项目2-Time类中的运算符重载(续)
- 黑马程序员IOS-OC语言-类的本质、SEL
- ZOJ3299:Fall the Brick(区间更新)
- Stencil buffer is not enabled.的问题解决
- Mac电脑管理Android手机(传输文件)
- Android onTouchEvent事件
- Binary Tree Level Order Traversal II -- leetcode
- PHP---常用代码
- Nginx和Tomcat负载均衡实现session共享