//OK,好不容易写完了,可惜分太少了,算了,权当练习吧,VC6.0下测试通过
#include
#include
#include
class Time
{
public:
Time():Hour(0),Minute(0),Second(0){}
Time(int h,int m,int s):Hour(h),Minute(m),Second(s){}
Time (Time&t):Hour(t.Hour),Minute(t.Minute),Second(t.Second){}
Time& Add(Time&);
Time& Sub(Time&);
friend Time& operator+( Time&, Time&);
friend Time& operator - (Time&, Time&);
void operator ++();//自增1秒(按两种结合形式)
void operator -- ();//自减1秒(按两种结合形式)
void operator ++(int);//自增1秒(按两种结合形式)
void operator -- (int);//自减1秒(按两种结合形式)
void Display()
{cout<
int Hour,Minute,Second;
};
Time& operator+( Time&t1, Time&t2)
{
int temp=t1.Hour*3600+t1.Minute*60+t1.Second+(t2.Hour*3600+t2.Minute*60+t2.Second);
t1.Hour=temp/3600;
t1.Minute=(temp%3600)/60;
t1.Second=temp%3600%60;
return t1;
}
Time& operator-( Time&t1, Time&t2)
{
int temp=t1.Hour*3600+t1.Minute*60+t1.Second-(t2.Hour*3600+t2.Minute*60+t2.Second);
t1.Hour=temp/3600;
t1.Minute=(temp%3600)/60;
t1.Second=temp%3600%60;
return t1;
}
Time& Time::Add(Time&t1)
{
int temp=t1.Hour*3600+t1.Minute*60+t1.Second+(Hour*3600+Minute*60+Second);
Hour=temp/3600;
Minute=(temp%3600)/60;
Second=temp%3600%60;
return *this;
}
Time& Time::Sub(Time&t1)
{
int temp=(Hour*3600+Minute*60+Second)-(t1.Hour*3600+t1.Minute*60+t1.Second);
Hour=temp/3600;
Minute=(temp%3600)/60;
Second=temp%3600%60;
return *this;
}
void Time::operator ++(){Second++;}
void Time::operator --(){Second--;}
void Time::operator ++(int){++Second;}
void Time::operator --(int){--Second;}
void main()
{
Time t1(1,5,6),t2(5,59,59);
t1=t1+t2; //测试+
t1.Display();
t2.Add(t1); //测试Add
t2.Display();
t2++; //测试++
t2.Display();
t2--; //测试--
t2.Display();
t2.Sub(t2); //测试Sub
t2.Display();
}