#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;
}
C++语言基础 例程 案例:Time类的设计
最新推荐文章于 2020-11-27 20:33:16 发布