#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); //输入输出运算的重载 friend istream &operator>>(istream &in,CTime &t); friend ostream &operator<<(ostream &out,const CTime &t); //比较运算符(二目)的重载 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);//返回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; } // 重载输入运算符>> istream &operator>>(istream &in,CTime &t) { char ch1,ch2; while(1) { cout<<"请输入时间(hh:mm:ss) "; cin>>t.hour>>ch1>>t.minute>>ch2>>t.second; if (ch1==':' && ch2==':') if (t.hour>-1 && t.hour<24 && t.minute>-1 && t.minute<60 && t.second>-1 && t.second<60) break; cerr<<"时间格式不正确! 请重新输入\n"; } return cin; } // 重载输出运算符<< ostream &operator<<(ostream &out, const CTime &t) { out<<t.hour<<':'<<t.minute<<':'<<t.second; return out; }
时间: 2024-07-30 08:49:09