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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗狗体力很差怎么办啊 脉差总是五十多怎么办 吃过敏药嗜睡乏力怎么办 写字紧张心跳的快手抖怎么办 怀孕食欲差没精神怎么办 爬个三楼就喘了怎么办 头被篮球砸了怎么办 打球手指肿了很久怎么办 客人吃饭跑单了怎么办 脑子总是记不住东西怎么办 穿的鞋有味道怎么办 生完孩子血糖高怎么办 生了孩子子宫大怎么办 生完孩子阴吹怎么办 怀孕初期感冒嗓子发炎怎么办 脑子转不过来弯怎么办 他说我道行不深怎么办 鞋子内测磨破了怎么办 老公拉肚子拉的很厉害怎么办 老公拉肚子拉得很厉害怎么办 和老公吵架很厉害怎么办 新鞋鞋底吱吱响怎么办 新鞋鞋底滑了怎么办 工作中同事不配合怎么办 做体力活一身疼怎么办 大脑左则中动脉血管狭窄?怎么办 儿童体质差免疫力差怎么办 nba篮球大师体力不够怎么办 一千米差10秒怎么办 四十岁以后体力和耐力差怎么办 打篮球一打比赛就紧张怎么办 耐克空军鞋鞋底边胶掉了怎么办 鞋底踩到老鼠胶怎么办 头蒙怎么办最快最有效 备孕老公压力大怎么办 宝宝太兴奋不睡怎么办 我很烦只睡三小时觉怎么办才好 柯基精力太旺盛怎么办 孩子学习熬夜精力不足怎么办 肺癌晚期吃不下饭怎么办 这俩天吃药太多肝肾功能不好怎么办