#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;
}
运行结果:
Time类中的运算符重载
最新推荐文章于 2022-05-17 18:15:08 发布