Time类中的运算符重载
来源:互联网 发布:希捷媒体同步软件 编辑:程序博客网 时间:2024/05/29 19:14
/** 程序的版权和版本声明部分* Copyright (c)2014, 烟台大学计算机学院学生* All rightsreserved.* 文件名称:a.cpp* 作 者:孔云* 完成日期:2014年4月21日* 版 本 号: v1.0* 输入描述:主函数中给出。* 问题描述:实现Time类中的运算符重载。* 输出描述:时间的比较结果、加减运算结果。*/#include <iostream>#include <iomanip>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):hour(h),minute(m),second(s) {} 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); //二目的加减运算符的重载 //返回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秒前的时间};void CTime::setTime(int h,int m,int s){ hour=h; minute=m; second=s;}void CTime::display(){ cout<<setfill('0')<<setw(2)<<hour<<":"<<setfill('0')<<setw(2)<<minute<<":"<<setfill('0')<<setw(2)<<second<<endl;}//下面实现所有的运算符重载代码。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){ if(*this<t)return false; return true;}bool CTime::operator<=(CTime &t){ if(*this>t)return false; return true;}bool CTime::operator==(CTime &t){ if(*this>=t&&*this<=t)return true; else return false;}bool CTime::operator != (CTime &t){ if(*this==t)return false; return true;}CTime CTime::operator+(CTime &t){ int h,m,s; h=hour+t.hour; m=minute+t.minute; s=second+t.second; if(s>59) { s-=60; m++; } if(m>59) { m-=60; h++; } if(h>23) { h-=24; } CTime tt(h,m,s);//调用构造函数 return tt;}CTime CTime::operator-(CTime &t){ int h,m,s; h=hour-t.hour; m=minute-t.minute; s=second-t.second; if(s<0) { s+=60; s--; } if(m<0) { m+=60; m--; } if(h<0) { h+=24; } CTime t1(h,m,s);//调用构造函数 return t1;}CTime CTime::operator+(int s)//返回s秒后的时间{ int s1=s%60; int m1=(s/60)%60; int h1=s/3600; CTime t2(h1,m1,s1); return *this+t2;}CTime CTime::operator-(int s){ int s1=s%60; int m1=(s/60)%60; int h1=s/3600; CTime t3(h1,m1,s1);//调用构造函数 return *this-t3;}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(8,20,25),t2(11,20,50),t3; cout<<"t1="; t1.display(); cout<<"t2="; t2.display(); cout<<"比较两个时间的大小:"<<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; if(t1!=t2)cout<<"t1≠t2"<<endl; cout<<endl; t3=t1-t2; cout<<"两个时间差为:"<<endl; t3.display(); t3=t1+t2; cout<<"两个时间和为:"<<endl; t3.display(); t3=t1+800; cout<<"返回t1 800s之后的时间:"<<endl; t3.display(); t3=t1-800; cout<<"返回t1 800s之前的时间:"<<endl; t3.display(); cout<<"时间的相关操作:"<<endl; t1+=t2; t1.display(); t1-=t2; t1.display(); t1+=800; t1.display(); t2-=800; t2.display(); return 0;}
心得体会:在实现二目的比较运算符重载和加减运算符重载函数时,注意不要让函数自身调用,在没有任何逻辑算法的情况下,根本无法实现函数功能,是不能完成调用的!
0 0
- 实现Time类中的运算符重载
- Time类中的运算符重载
- Time类中的运算符重载
- Time类中的运算符重载
- Time类中的运算符重载
- Time类中的运算符重载
- 实现Time类中的运算符重载
- 实现Time类中的运算符重载
- Time 类中的运算符重载
- Time类中的运算符重载
- Time类中的运算符重载
- Time类中的运算符重载
- Time类中的运算符重载
- Time类中的运算符重载
- Time类中的运算符重载
- Time类中的运算符重载
- Time类中的运算符重载
- Time类中的运算符重载
- mysql中使用limit要使用order by排序
- spring MVC笔记3——传递参数和解决中文乱码
- VC++深入详解(5):MFC对话框(一)
- Java 8?还记得那年大明湖畔的Java 7吗?
- Linux——du命令参数
- Time类中的运算符重载
- 机床和车床材料的搬运工具Simulation and Verification
- DLL 的编写,引用,导出 .
- 如何比较mysql数据库结构的不同?
- iOS多线程-- dispatch源
- Android开发之实现透明的颜色效果
- 特征选择与特征权重计算的区别
- python读取文本文档处理不可见字符
- android 属性android:visibility