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();
	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 &t);
	CTime operator-(CTime &t);
	CTime operator+(int s);
	CTime operator-(int s);
	//二目赋值运算符的重载
	CTime operator+=(CTime &t);
	CTime operator-=(CTime &t);
	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()
{
	cout<<"请输入时分秒;";
	cin>>hour>>minute>>second;
}
void CTime::display()
{
	cout<<hour<<"/"<<minute<<"/"<<second<<endl;
}
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)
	{
		if(minute<t.minute)
			return true;
		if(minute==t.minute)
		{
			if(second<t.second)
				return true;
			else
				return false;
		}
	}
	else
		return false;
}
bool CTime::operator>=(CTime &t)
{
	if(*this<t) return false;
	return true;
}
bool CTime::operator<=(CTime &t)
{
	if(*this>t) return false;
	return true;
}
bool CTime::operator==(CTime &t)
{
	if(*this<t||*this>t) return false;
	return true;
}
bool CTime::operator!=(CTime &t)
{
	if(*this==t) return false;
	return true;
}
CTime CTime::operator+(CTime &t)
{
	CTime a;
	a.hour=hour+t.hour;
	a.minute=minute+t.minute;
	a.second=second+t.second;
	if(a.second>=60)
	{
		a.second-=60;
		a.minute++;
	}
	if(a.minute>=60)
	{
		a.minute-=60;
		a.hour++;
	}
	if(a.hour>=24) a.hour-=24;
	return a;
}
CTime CTime::operator-(CTime &t)
{
	int h,m,s;  
    s=second-t.second;  
    m=minute-t.minute;  
    h=hour-t.hour;  
    if (s<0)  
    {  
        s+=60;  
        m--;  
    }  
    if (m<0)  
    {  
        m+=60;  
        h--;  
    }  
    if (h<0) h+=24;  
    CTime t0(h,m,s);  
    return t0;  
	/*CTime a;//这样做显示出错了。。。
	a.second=second-t.second;
	a.minute=minute-t.minute;
	a.hour=hour-t.hour;
	if(a.second<0)
	{
		a.second+=60;
		a.minute--;
	}
	if(a.minute<0)
	{
		a.minute+=60;
		a.hour--;
	}
	if(a.hour<0) a.hour+=24;
	return a;*/
}
CTime CTime::operator+(int s)
{
	 int ss=s%60;  
    int mm=(s/60)%60;  
    int hh=s/3600;  
    CTime t0(hh,mm,ss);  
    return *this+t0; 
	/*CTime a;//做错鸟~
	a.second+=s;
	if(a.second>=60)
	{
		a.minute+=a.second/60;
		a.second%=60;
	}
	if(a.minute>=60)
	{
		a.hour+=a.minute/60;
		a.minute%=60;
	}
	return a;*/
}
CTime CTime::operator-(int s)
{
	 int ss=s%60;  
    int mm=(s/60)%60;  
    int hh=s/3600;  
    CTime t0(hh,mm,ss);  
    return *this-t0;  
}
CTime CTime::operator+=(CTime &t)
{
	*this=*this+t;
	return *this;
}
CTime CTime::operator-=(CTime &t)
{
	*this=*this-t;
	return *this;
}
CTime CTime::operator+=(int s)
{
	*this=*this+s;
	return *this;
}
CTime CTime::operator-=(int s)
{
	*this=*this-s;
	return *this;
}
int main()
{
	CTime a,b,c;
	a.setTime();
	cout<<"a时间:";
	a.display();
	b.setTime();
	cout<<"b时间:";
	b.display();
	cout<<"c时间:";
	c.display();
	cout<<"a>b"<<(a>b?"是":"不是")<<"正确的"<<endl;
	cout<<"a<b"<<(a<b?"是":"不是")<<"正确的"<<endl;
	cout<<"a>=b"<<(a>=b?"是":"不是")<<"正确的"<<endl;
	cout<<"a<=b"<<(a<=b?"是":"不是")<<"正确的"<<endl;
	cout<<"a==b"<<(a==b?"是":"不是")<<"正确的"<<endl;
	cout<<"a!=b"<<(a!=b?"是":"不是")<<"正确的"<<endl;
	c=a+b;
	cout<<"a+b=";
	c.display();
	c=a-b;
	cout<<"a-b=";
	c.display();
	c=a+3000;
	cout<<"a+3000=";
	c.display();
	a+=b;
	cout<<"a+=b:";
	a.display();
	a+=5000;
	cout<<"a+=5000: ";
	a.display();
	return 0;
}
运行结果:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值