在 MyTime 类中增加 1 个公有成员函数 getTimeSpan,计算 2 个时间之间的
时间差,返回结果也是一个 MyTime 对象。
此外为类增加 1 个构造函数,通过传递 1 个参数(时间的总分钟数)来构造
时间对象。将 output、getHour、getMinute、getTotalMinutes 定义为常成员函数。
class MyTime{
public:
MyTime();
MyTime(int h,int m); //通过指定 h 和 m 构造 MyTime 对象
MyTime( int minutes); //通过指定分钟数构造 MyTime 对象
void setTime(int h, int m); //设置新的时间
void output() const; //以 hh:mm 格式输出时间
int getHour() const; //获得小时
int getMinute() const; //获得分钟
int getTotalMinutes() const; //获得从 0 点 0 分起的总分钟数
MyTime getTimeSpan( const MyTime &t )const; //计算时间差
private:
int hour;
int minute;
void normalizeTime(); //规范化小时为 0~23,分钟为 0~59
};
int main(){
MyTime t1(9,20),t2(11,35),t3;
t3=t1.getTimeSpan(t2);
t3.output();
return 0;
}
【提示】计算时间差,可先计算出 2 个时间的总分钟数,得到分钟数差值,
再根据分钟数构造 1 个 MyTime 对象并返回。
#include <iostream>
#include <iomanip>
using namespace std;
class MyTime
{
public:
MyTime()
: hour(0),
minute(0)
{
}
MyTime(int h, int m)
: hour(h),
minute(m)
{
}
MyTime(int minutes)
: hour(minutes / 60),
minute(minutes % 60)
{
}
void setTime(int h, int m)
{
hour = h;
minute = m;
}
void output() const
{
cout << setfill('0') << setw(2) << hour << ":" << setw(2) << minute << endl;
}
int getHour() const { return hour; }
int getMinute() const { return minute; }
int getTotalMinutes() const { return hour * 60 + minute; }
MyTime getTimeSpan(const MyTime &t) const
{
return { t.getTotalMinutes() - getTotalMinutes() };
}
private:
int hour;
int minute;
};
int main()
{
MyTime t1(9, 20), t2(11, 35);
MyTime t3 = t1.getTimeSpan(t2);
t3.output();
return 0;
}