//mytime.h#ifndef MYTIME_H_#define MYTIME_H_#include <iostream>class Time
{
private:
int hours;
int minutes;
public:
Time();
Time(int h,int m = 0); //构造函数void AddMin(int m);
void AddHr(int h);
void Reset(int h = 0,int m = 0);
Time operator+(const Time & t) const;
Time operator-(const Time & t) const;
Time operator*(double n) const;
friend Time operator*(double m,const Time & t)
{ return t * m ;} //内联函数定义 friendstd::ostream & operator<<(std::ostream &os, const Time & t);
};
#endif
类的定义
//mytime.cpp#include "mytime.h"
Time::Time()
{
hours = minutes = 0;
}
Time::Time(int h,int m)
{
hours = h;
minutes = m;
}
void Time::AddMin(int m)
{
minutes += m;
hours += minutes / 60;
minutes %= 60;
}
void Time::AddHr(int h)
{
hours += h;
}
void Time::Reset(int h,int m)
{
hours = h;
minutes = m;
}
Time Time::operator+(const Time & t) const
{
Time sum;
sum.minutes = minutes + t.minutes;
sum.hours = hours + t.hours + sum.minutes /60;
sum.minutes = sum.minutes % 60;
return sum;
}
Time Time::operator-(const Time & t) const
{
Time diff;
int tot1,tot2;
tot1 = t.minutes + t.hours * 60;
tot2 =minutes + hours * 60;
diff.hours = (tot2 -tot1) /60; //小时
diff.minutes = (tot2 -tot1) % 60;//分钟 return diff;
}
Time Time::operator*(double mult) const
{
Time result;
long totalminutes = hours * mult * 60 +minutes *mult; //总分钟
result.hours = totalminutes /60;
result.minutes = totalminutes % 60;
return result;
}
std::ostream & operator<<(std::ostream & os,const Time & t)
{
os << t.hours << " hours," << t.minutes <<" minutes";
return os; //对象本身返回还是对象,方便级联使用
}