求教重载运算符++的一点问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 11:09:00
#include<iostream>
using namespace std;
class Clock;
{
public:
Clock(int NewH=0;int NewM=0;int NewS=0);
void ShowTime();
Clock& operator ++();
Clock operator ++(int);
private:
int Hour,Minute,Second;
};
Clock::Clock(int NewH,int NewM,int NewS)
{
if(0<=NewH && NewH<24 && 0<=NewH && NewM<60 && 0<=NewS && NewS<60)
{
Hour=NewH;
Minute=NewM;
Second=NewS;
}
else
cout<<"time error!"<<endl;
}
void Clock::ShowTime(){cout<<Hour<<":"<<Minute<<":"<<Second<<endl;}
Clock& Clock::operator ++ () //前置重载定义
{
Second ++;
if (Second>=60)
{
Second=Second-60;
Minute++;
if (Minute>=60)
{
Minute=Minute-60;
Hour++;
Hour=Hour%24;
}
}
return* this;
}
Clock Clock::operator

问题主要是:
1.声明Clock类时不应该在class Clock;这条语句之后加分号。

2.if(0<=NewH && NewH<24 && 0<=NewH && NewM<60 && 0<=NewS && NewS<60)这条语句中有一个地方写错了,不是语法错,是写错,你仔细看看,肯定看得出来。

3.main函数中没有写return 0;这条语句。

4.Clock(int NewH=0;int NewM=0;int NewS=0);中间的分隔号应为逗号,即Clock(int NewH=0,int NewM=0,int NewS=0); 。

5.Clock myClock(23.59.59);中间的分隔号应为逗号,即Clock myClock(23,59,59); 。

备注:
1.重载运算符时用不用"&"都无所谓,你看我下面的程序就没有用,一样是正确的。

2.后置重载函数的定义中返回值是old,其实这个和前置重载函数是一样的,因为在定义中不是说了Clock old=*this;吗,所以说其实无论返回值是old还是*this都是一样的。

下面是我修改的程序,希望对你有用。

#include<iostream>
using namespace std;

class Clock
{
public:
Clock(int NewH=0,int NewM=0,int NewS=0);
void ShowTime();
Clock operator ++();
Clock operator ++(int);
private:
int Hour,Minute,Second;
};

Clock::Clock(int NewH,int NewM,int NewS)
{
if(0<=NewH && NewH<