Time类中的运算符重载

来源:互联网 发布:怎么购买app软件 编辑:程序博客网 时间:2024/05/22 06:55
/** 程序的版权和版本声明部分* Copyright (c)2013, 烟台大学计算机学院学生* All rightsreserved* 文件名称:score.cpp* 作 者: 赵兰* 完成日期: 2013年 4月 24日* 版本号: v1.0* 输入描述:略* 问题描述:略* 输出:如下*/// qq.com.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"//【项目2-Time类中的运算符重载】实现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);    //二目运算符的重载    CTime operator+(CTime &c);//返回c所规定的时、分、秒后的时间,例t1(8,20,25),t2(11,20,50),t1+t2为:41:15    CTime operator-(CTime &c);//对照+理解    CTime operator+(int s);//返回s秒后的时间    CTime operator-(int s);//返回s秒前的时间    //一目运算符的重载    CTime operator++( int);//后置++,下一秒    CTime operator++();//前置++,下一秒,前置与后置返回值不一样    CTime operator--( int);//后置--,前一秒    CTime operator--();//前置--,前一秒    //赋值运算符的重载    CTime operator+=(CTime &c);    CTime operator-=(CTime &c);    CTime operator+=(int s);    CTime operator-=(int 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 CTime::operator > (CTime &t){ if(hour>t.hour)  return true; else if(hour==t.hour&&minute>t.minute)  return true; else if(hour==t.hour&&minute==t.minute&&second>t.second)  return true; else return false;}bool CTime::operator < (CTime &t){ if(hour<t.hour)  return true; else if(hour==t.hour&&minute<t.minute)  return true; else if(hour==t.hour&&minute==t.minute&&second<t.second)  return true; else return false;}bool CTime::operator >= (CTime &t){ if(hour>t.hour)  return true; else if(hour==t.hour && minute>t.minute)  return true; else if(hour==t.hour && minute==t.minute && second>t.second)  return true; else if(hour==t.hour && minute==t.minute && second==t.second)  return true; else  return false;}bool CTime::operator <= (CTime &t){ if(hour<t.hour)  return true; else if(hour==t.hour&&minute<t.minute)  return true; else if(hour==t.hour&&minute==t.minute&&second<t.second)  return true; else if(hour==t.hour&&minute==t.minute&&second==t.second)  return true; else return false;}bool CTime::operator == (CTime &t){ if(hour==t.hour&&minute==t.minute&&second==t.second)  return true; else return false;}bool CTime::operator != (CTime &t){ if(hour!=t.hour||minute!=t.minute||second!=t.second)  return true; else return false;}//二目运算符的重载CTime CTime::operator+(CTime &c){ CTime t; t.hour=hour+c.hour; t.minute=minute+c.minute; t.second=second+c.second; if(t.second>=60){  t.second=t.second-60;  t.minute=t.minute+1;  if(t.minute>=60){   t.minute=t.minute-60;   t.hour=t.hour+1;   if(t.hour>=24)    t.hour=t.hour-24;  } } return t;}CTime CTime::operator-(CTime &c){ CTime t; t.hour=hour-c.hour; t.minute=minute-c.minute; t.second=second-c.second; if(t.second<0){  t.second=t.second+60;  t.minute=t.minute-1; } if(t.minute<0){  t.minute=t.minute+60;  t.hour=t.hour-1; } if(t.hour<0)  t.hour=t.hour+24; return t;}CTime CTime::operator+(int s){ CTime t; t.second=t.second+s; if(t.second>=60){  t.second=t.second-60;  t.minute=t.minute+1;  if(t.minute>=60){   t.minute=t.minute-60;   t.hour=t.hour+1;   if(t.hour>=24)    t.hour=t.hour-24;  } } return t;}CTime CTime::operator-(int s){ CTime t; t.second=t.second-s; if(t.second<0){  t.second=t.second+60;  t.minute=t.minute-1; } if(t.minute<0){  t.minute=t.minute+60;  t.hour=t.hour-1; } return t;}CTime CTime::operator++( int ){ CTime t(*this); second++; if(second>=60){ second=second-60; minute=minute+1; } return t;}CTime CTime::operator++(){ second++; if(second>=60){  second=second-60;  minute=minute+1; } return *this;}CTime CTime::operator--( int){ CTime t(*this); second--; if(second<0){  second=second+60;  minute=minute-1; } return t;}CTime CTime::operator--(){ second--; if(second<0){  second=second+60;  minute=minute-1; } return *this;}//赋值运算符的重载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){ second=second+s; if(second>=60){  second=second-60;  minute=minute+1;  if(minute>=60){   minute=minute-60;  hour=hour+1;  if(hour>=24)   hour=hour-24; } } return CTime(hour,minute,second);}CTime CTime::operator-=(int s){ second=second-s; if(second<0){  second=second+60;  minute=minute-1; if(minute<0){    minute=minute+60;   hour=hour-1;   if(hour<0)    hour=hour+24;  }  } return CTime(hour,minute,second);}int main(){    CTime t1(8,20,25),t2(11,20,50),t3,t;    cout<<"t1为:";    t1.display();    cout<<"t2为:";    t2.display();    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<<endl; cout<<"两项相加之后"<<endl; t=t1+t2; t.display(); cout<<"两项相减之后"<<endl; t=t2-t1; t.display(); cout<<"时间加加之后t1++="<<endl; t=t1++; t.display(); cout<<"++t1="<<endl; t=++t1; t.display(); cout<<"时间减减t2--="<<endl; t=t2--; t.display(); cout<<"--t2="<<endl; t=--t2; t.display(); cout<<"+=的应用t2=t2+2="<<endl; t2+=2; t2.display(); cout<<"-=的应用t2=t2-2="<<endl; t2-=2; t2.display(); t3.setTime(1,2,3); cout<<"加上的应用t3=t3+t1="<<endl; t3+=t1; t3.display(); cout<<"减去的应用t2=t2-t1="<<endl; t2-=t1; t2.display(); return 0;}