早教吧 育儿知识 作业答案 考试题库 百科 知识分享

定义时钟clock类,满足以下要求:(1)有hour,minute,second私有成员变量。(2)定义构造函数和析构函数。(3)重载运算,实现对时间的改变,要求用类的成员函数实现。(4)重载运算符“+”

题目详情
定义时钟clock类,满足以下要求:(1)有hour,minute,second私有成员变量。(2)定义构造函数和析构函数。(3)重载运算,实现对时间的改变,要求用类的成员函数实现。(4)重载运算符“+”,函数原形为clock operator+(const clock&clock,const int second),含义为时钟加上second秒,用友元函数实现。(5)同4,加变减,用普通函数实现。急求!!
▼优质解答
答案和解析
#include
class Clock
{
public:
Clock(const int h,const int m,const int s);
~Clock();
Clock& operator ++();
Clock& operator --();
Clock friend operator+(const Clock &clock, const int second);
Clock operator-(const int s);
Clock& operator=(Clock &clock);
void Show(){printf("%02d:%02d:%02d",hour,minute,second);}
private:
int hour;
int minute;
int second;
};
Clock::Clock(const int h,const int m,const int s)
{
hour=h,minute=m,second=s;
}
Clock::~Clock()
{
}
Clock& Clock::operator ++()
{
if(++second >=60)
{
minute+=second/60;
second%=60;
hour+=minute/60;
minute%=60;
}
return *this;
}
Clock& Clock::operator --()
{
second+=59;
minute+=second/60+59;
second%=60;
--hour+=minute/60;
minute%=60;
return *this;
}
Clock operator+(const Clock &clock, const int second)
{
static Clock ck(0,0,0);
ck.second=clock.second+second;
ck.minute=clock.minute+ck.second/60;
ck.second%=60;
ck.hour=clock.hour+ck.minute/60;
ck.minute%=60;
return ck;
}
Clock Clock::operator-(const int s)
{
static Clock ck(0,0,0);
ck.second=second-s%60+60;
ck.minute=minute+ck.second/60+59-s/60%60;
ck.second%=60;
ck.hour=hour+ck.minute/60-1-s/3600;
ck.minute%=60;
return ck;
}
Clock& Clock::operator=(Clock &clock)
{
hour=clock.hour;
minute=clock.minute;
second=clock.second;
return *this;
}
int main()
{
Clock ck(1,2,3);
ck.Show();
ck--;
ck.Show();
ck++;
ck.Show();
ck=ck-500;
ck.Show();
ck=ck+500;
ck.Show();
return 0;
} 上面是错的,不要崇拜哥