首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ 运算符重载有关问题,帮帮忙吧

2012-02-27 
C++ 运算符重载问题,帮帮忙吧//实验11第2题目.cpp:定义控制台应用程序的入口点。//#includestdafx.h #inc

C++ 运算符重载问题,帮帮忙吧
//     实验11第2题目.cpp     :     定义控制台应用程序的入口点。    
//    
 
#include     "stdafx.h "    
#include     <iostream>    
using     namespace     std;    
 
int     _tmain(int     argc,     _TCHAR*     argv[])    
{    
                      return     0;    
}    
class     ctime    
{    
int     houre;    
int     minue;    
int     secon;    
public:    
ctime(int     a,int     b,int     c)    
{houre=a;    
minue=b;    
secon=c;    
}    
void     display()    
{cout < <houre < < ": " < <minue < < ": " < <secon < < ": " < <endl;    
}    
void     sethoure(int     houres)    
{houre=houres;}    
void     setminue(int     minues)    
{minue=minues;}    
void     setsecon(int     secons)    
{secon=secons;}    
friend     ostream     &operator     < <(ostream&out,ctime&c)    
{out < <c.houre < < ": " < <c.minue < < ": " < <c.secon < < ": " < <endl;    
return     out;}    
  ctime     operator     ++(int)    
{if(++secon> =60)    
  {if(++minue> =60)    
  return     ctime(houre+1,minue-60,secon-60);    
else    
return    
ctime(houre,minue,secon-60);}    
else    
return     ctime(houre,minue,secon);    
  }    
};    
int     main()    
{int     a,b,c,d;    
                      cout < < "输入初始时间 " < <endl;    
cin> > a> > b> > c;    
ctime     time(a,b,c);    
for(d=0;d <=60;d++)    
{time++;    
cout < <time;}    
return     0;    
}    
 
问题是         模拟时钟走动,上面这个程序当秒跑到60以上能执行分针加1,但是秒针却不能减60;为什么?同样分针跑到60以上,能执行时针加1,分针却不能减60;谁明白讲解下。而先面的程序:    
/     实验11第2题目.cpp     :     定义控制台应用程序的入口点。    
//    
 
#include     "stdafx.h "    
#include     <iostream>    
using     namespace     std;    
 
int     _tmain(int     argc,     _TCHAR*     argv[])    
{    
                      return     0;    
}    
class     ctime    


{    
int     houre;    
int     minue;    
int     secon;    
public:    
ctime(int     a,int     b,int     c)    
{houre=a;    
minue=b;    
secon=c;    
}    
void     display()    
{cout < <houre < < ": " < <minue < < ": " < <secon < < ": " < <endl;    
}    
void     sethoure(int     houres)    
{houre=houres;}    
void     setminue(int     minues)    
{minue=minues;}    
void     setsecon(int     secons)    
{secon=secons;}    
friend     ostream     &operator     < <(ostream&out,ctime&c)    
{out < <c.houre < < ": " < <c.minue < < ": " < <c.secon < < ": " < <endl;    
return     out;}    
  ctime     operator     ++(int)    
{if(++secon> =60)    
  {if(++minue> =60)    
  {     houre+=1;    
  minue-=60;    
  secon-=60;    
  return     ctime(houre,minue,secon);}    
else     secon-=60;    
return    
ctime(houre,minue,secon);}    
else    
return     ctime(houre,minue,secon);    
  }    
};    
int     main()    
{int     a,b,c,d;    
                      cout < < "输入初始时间 " < <endl;    
cin> > a> > b> > c;    
ctime     time(a,b,c);    
for(d=0;d <=60;d++)    
{time++;    
cout < <time;}    
return     0;    
}却能达到目的?

[解决办法]
class Ctime
{
int houre;
int minue;
int secon;
public:
Ctime(int a,int b,int c)
{
houre=a;
minue=b;
secon=c;
}
void display()
{
cout < <houre < < ": " < <minue < < ": " < <secon < < ": " < <endl;
}
void sethoure(int houres)
{
houre=houres;
}
void setminue(int minues)
{
minue=minues;
}
void setsecon(int secons)
{
secon=secons;
}
friend ostream &operator < <(ostream&out,Ctime&c)
{
out < <c.houre < < ": " < <c.minue < < ": " < <c.secon < < ": " < <endl;
return out;
}
Ctime operator ++(int)
{
secon++;
if( secon> =60){
secon=0;
minue++;
}
if(minue> =60){
minue=0;
houre++;
}
return (*this);
}
};


int main(int ,char* [])
{
int a,b,c,d;
cout < < "输入初始时间 " < <endl;
cin> > a> > b> > c;
Ctime t(a,b,c);


for(d=0;d <=60;d++)
{
t++;
cout < <t;
}
return 0;
}
[解决办法]
可能和你的编译器有关。
大家说的你的代码很乱,是因为你写的代码把很多东西都放在一起处理,这样出问题时不好调试,代码的可读性也差

热点排行