早教吧作业答案频道 -->其他-->
定义时钟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;
} 上面是错的,不要崇拜哥
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;
} 上面是错的,不要崇拜哥
看了 定义时钟clock类,满足以...的网友还看了以下:
椭球面的三重积分求x^2/a^2+y^2/b^2+z^2/c^2的三重积分,其中积分区域由曲面x^ 2020-05-16 …
JAVA多选题1若C类实现I接口,且C类不是抽象类。则正确的是()。A.Cc=newI();B.I 2020-05-17 …
冷库的室温为+2°C,现存入一批食物冷冻,必须使室温保持在-22°C,若冷冻机使室温每小时下降5° 2020-05-17 …
现有6套不同的练习题,1)平均分给3个学生,有多少种不同的分法?2)平均分为3份,有多少种不同的分 2020-05-21 …
(1)为类Point实现一个重载的赋值运算符。(2)为类Point实现重载的流插入运算符。(3)为 2020-06-26 …
如何进行数字的轮换?例如:a=1,b=2,c=3,第一次是这样.第二次进行交换:a=1,b=3,c 2020-07-16 …
有三个带有活塞的a,b,c的圆筒,底部相连,里面装有水,活塞a,b,c截面之比为4:3:2,活塞重不 2020-11-01 …
有三个带有活塞的a,b,c的圆筒,底部相连,里面装有水,活塞a,b,c截面之比为4:3:2,活塞重不 2020-11-01 …
下列那一项不属于我国会计核算的一般原则A实质重于形式B持续经营C现金流量表D利润分配表C重要性D是这 2020-11-03 …
王怡现有2张80分和2张1.2元邮票,他最多可寄多重到哪里首重100g,每重20g不足当20g本埠0 2020-12-11 …