实现Time类中的运算符重载

来源:互联网 发布:剑三周边淘宝商城 编辑:程序博客网 时间:2024/05/17 22:58
/** 程序的版权和版本声明部分:* Copyright (c) 2013, 烟台大学计算机学院* All rights reserved.* 文件名称:test.cpp* 作    者:周经纬* 完成日期:2014年 4月 16日* 版 本 号:v12.1* 实现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();    //二目的比较运算符重载    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为: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::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;}//比较运算返回的是比较结果,是bool型的true或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 (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 (minute==t.minute) return true;    if (second==t.second) return true;    return false;}bool CTime::operator != (CTime &t){    if(*this==t)        return false;    return true;}//可以直接使用已经重载了的加减运算实现//这种赋值, 例如 t1+=20,直接改变当前对象的值,所以在运算完成后,将*this作为返回值CTime CTime::operator+(CTime &c){    int h,m,s;    h=hour+c.hour;    m=minute+c.minute;    s=second+c.second;    if (s>59)    {        s-=60;        m++;    }    if (m>59)    {        m-=60;        h++;    }    if (h>23) h-=24;    CTime t3(h,m,s);    return t3;}CTime CTime::operator-(CTime &c){    int h,m,s;    h=hour-c.hour;    m=minute-c.minute;    s=second-c.second;    if (s<0)    {        s+=60;        m--;    }    if (m<0)    {        m+=60;        h--;    }    if (h<0) h+=24;    CTime t3(h,m,s);    return t3;}int main(){    CTime t1(2,10,10),t2(3,9,11),t;    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;    cout<<endl;    cout<<"两时间的计算:"<<endl;    t=t1+t2;    t.display();    t=t1-t2;    t.display();}//自行编制用于测试的main()函数,有些结果不必依赖display()函数,提倡用单步执行查看结果

虽然功能有点少,不过开始花了一节课吗、,硬是没明白怎么写,桑心啊,额,忘了写时间计算是加还是减,哈哈,

0 0
原创粉丝点击