早教吧作业答案频道 -->其他-->
定义时钟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类,满足以...的网友还看了以下:
如图,B点不动,A点可以在Y轴上任意移动但不能和o点重合,直线AC是直线AB所做的垂线,点D是直线A 2020-03-30 …
一道java编程题:有一矩阵:a b c d e f g h i j k l m n o p q 2020-04-06 …
如图所示,平行六面体OABC-O‘A’B‘C’,且向量OA=a,OC=b,OO‘=c(1)用向量a 2020-05-13 …
有氧呼吸中的O2氧元素到哪里去了?Co2还是H2O?光合作用中CO2的C和O分别去...有氧呼吸中 2020-06-30 …
如图,AB切O于点B,AD交O于点C和点D,点E为DC的中点,连接OE交CD于点F,连接BE交CD 2020-07-09 …
如图,圆心在坐标原点的⊙O的半径为1,若抛物线y=-x2+c和⊙O刚好有三个公共点,则此时c=.若 2020-07-26 …
已知点A在曲线P:y=x2(x>0)上,A过原点O,且与y轴的另一个交点为M.若线段OM,A和曲线 2020-07-30 …
如图:⊙O和⊙O'内切于P半径OA和OB切⊙O'于C、D连O'C和O'D如果两圆半径分别为9和3则 2020-07-31 …
老师列举过C和O的各种划分之最,1生物体内占细胞干重最多的的元素是C,2湿重是O.3…………(我记得 2020-12-24 …
A、B、C、D是正方形的四个顶点.如果A的位置是(0,0),B的位置是(4,0),D的位置是(0,4 2020-12-25 …