同学之路——在路上

专业交流

导航

易犯错误:友员重载题。要细心

这个程序的输出结果会是什么?
#include   <iostream>
using   namespace   std;

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

Clock::Clock(int   NewH,int   NewM,int   NewS)
{
if(NewH> =0&&NewH <24&&NewM> =0&&NewM <60&&NewS> =0&&NewS <60)
{
  Hour=NewH;
  Minute=NewM;
  Second=NewS;
}
else
{
  cout < <"Time   error!" < <endl;
}
}

void   Clock::ShowTime()
{
cout < <Hour < <":" < <Minute < <":" < <Second < <endl;
}

//void   Clock::operator   ++()
void   operator   ++(Clock   c1)
{
// Second++;
c1.Second++;
// if(Second> =60)
if(c1.Second> =60)
{
//   Second=Second-60;
  c1.Second=c1.Second-60;
//   Minute++;
  c1.Minute++;
//   if(Minute> =60)
  if(c1.Minute> =60)
  {
//     Minute=Minute-60;
    c1.Minute=c1.Minute-60;
//     Hour++;
    c1.Hour++;
//     Hour=Hour%24;
    c1.Hour=c1.Hour%24;
  }
}
cout < <"++myClock";
}

//void   Clock::operator   ++(int)
void   operator   ++(Clock   c2,int)
{
// Second++;
c2.Second++;
// if(Second> =60)
if(c2.Second> =60)
{
//   Second=Second-60;
  c2.Second=c2.Second-60;
//   Minute++;
  c2.Minute++;
//   if(Minute> =60)
  if(c2.Minute> =60)
  {
//     Minute=Minute-60;
    c2.Minute=c2.Minute-60;
//     Hour++;
    c2.Hour++;
//     Hour=Hour%24;
    c2.Hour=c2.Hour%24;
  }
}
cout < <"myClock++";
}

int   main()
{
Clock   myClock(23,59,59);
cout < <"First   time   output:";
myClock.ShowTime();
myClock++;
myClock.ShowTime();
++myClock;
myClock.ShowTime();
}

posted on 2007-12-19 21:50  Camellia  阅读(314)  评论(2编辑  收藏  举报