Time类中的运算符重载(2)-二目运算符的重载

来源:互联网 发布:台州网络答题知识竞赛 编辑:程序博客网 时间:2024/04/30 21:56

问题描述及代码:

/* *copyright (c) 2016,烟台大学计算机学院*All rights reserved. *文件名称:hellow.cpp *作者:田甜*完成日期:2016年5月19日*版本号:v1.0 * *问题描述:实现Time类中的运算符重载。*输入描述:/// *程序输出:///*/#include <iostream>using namespace std;class CTime{private:    unsigned short int hour,minute,second;public:    CTime(int h=0,int m=0,int s=0):hour(h),minute(m),second(s){}    void set_time(int h,int m,int s)    {        hour=h;        minute=m;        second=s;    }    void display();    CTime operator +(const CTime&t);    CTime operator -(const CTime&t);    CTime operator +(int t);    CTime operator -(int t);};void CTime::display(){    cout<<hour<<":"<<minute<<":"<<second<<endl;}CTime CTime::operator+(const CTime &t){    int hh=hour+t.hour;    int mm=minute+t.minute;    int ss=second+t.second;    if(ss>59)    {        ss-=60;        mm++;    }    if(mm>59)    {        mm-=60;        hh++;    }    if(hh>23)    {        hh-=24;    }    CTime t0;    t0.set_time(hh,mm,ss);    return t0;}CTime CTime::operator-(const CTime&t){    int hh=hour-t.hour;    int mm=minute-t.minute;    int ss=second-t.second;    if(ss<0)    {        ss+=60;        mm--;    }    if(mm<0)    {        mm+=60;        hh--;    }    if(hh<0)    {        hh+=24;    }    CTime t0;    t0.set_time(hh,mm,ss);    return t0;}CTime CTime::operator+(int t){    int ss=0,mm=0,hh=0;    ss+=t%60;    mm+=(t/60)%60;    hh+=t/3600;    CTime t0(hh,mm,ss);    return *this+t0;}CTime CTime::operator-(int t){    int ss=0,mm=0,hh=0;    ss+=t%60;    mm+=(t/60)%60;    hh+=t/3600;    CTime t0(hh,mm,ss);    return *this-t0;}int main(){    CTime t1(5,10,20),t2(12,59,59);    (t1+t2).display();    (t1-t2).display();    (t1+60).display();    (t2+1).display();    return 0;}


 

运行结果:

心得体会:

通过这几次的练习我发现,在执行两时间相加或者加上若干秒时,往往避免直接改变函数私有成员的值,而是通过定义新对象t0然后调用其set_time函数来实现的,最后将

t0返回。
0 0
原创粉丝点击