题目描述:
设计一个Time类,有hour、minute、second等私有数据成员。 对该类重载+、-和<<运算符。
+运算符函数要实现Time对象和一个正整数n的相加,n理解为秒数,该运算符函数返回当前时间加n秒之后的Time对象。(加之后的时间可能跨到后一天)
-运算符函数重载的第一个版本要实现Time对象和一个正整数n的相减,n理解为秒数,该运算符函数返回当前时间减n秒之后的Time对象。(减之后的时间可能回到前一天)
-运算符函数重载的第二个版本要实现两个Time对象相减(假设两个时间是同一天之内的),该运算符函数返回两个时间相差的秒数。
<<运算符函数重载的目的是为了直接使用cout来输出时间信息。
main函数已经写好,请根据main函数的内容完成该类的设计:
int main(){
int s;
cin>>s;
Time t1(13,30,20);
t1=t1-s;
cout<<t1;
Time t2(21,10,33);
t2=t2+s;
cout<<t2;
cout<<t1-t2<<endl;
return 0;
}
样例输入:
333
样例输出:
13:24:47
21:16:6
-28279
#include<iostream>
using namespace std;
class Time
{
private:
int hour;
int minute;
int second;
public:
Time(int hour, int minute, int second)
{
if (hour >= 0 && hour < 24 && minute >= 0 && minute < 60
&& second >= 0 && second < 60)
{
this->hour = hour;
this->minute = minute;
this->second = second;
}
}
Time operator-(int& s)
{
int s1, h, m;
s1 = s % 60;
h = s / 3600;
m = (s / 60) % 60;
hour = hour - h;
minute = minute - m;
second = second - s1;
while (second < 0)
{
second += 60;
minute -= 1;
}
while (minute < 0)
{
minute += 60;
hour -= 1;
}
while (hour < 0)
{
hour += 24;
}
return Time(hour, minute, second);
}
Time operator+(int& s)
{
int s1, h, m;
s1 = s % 60;
h = s / 3600;
m = (s /60) % 60;
hour = hour + h;
minute = minute + m;
second = second + s1;
while (second > 59)
{
second -= 60;
minute++;
}
while (minute > 59)
{
minute -= 60;
hour++;
}
while (hour > 23)hour -= 24;
return Time(hour, minute, second);
}
int operator-(const Time& c)const
{
int n;
n = hour *3600 + minute * 60 + second - c.hour *3600 - c.minute * 60 - c.second;
return n;
}
friend ostream & operator<< (ostream & out, const Time & c1);
};
ostream& operator<<(ostream& out, const Time& c1)
{
out << c1.hour <<":" << c1.minute <<":" << c1.second << endl;
return out;
}