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

关于重载运算符函数返回值的困惑解决办法

2012-02-26 
关于重载运算符函数返回值的困惑请各位大侠帮忙看看,谢谢!#include iostreamusingnamespacestdclasstim

关于重载运算符函数返回值的困惑
请各位大侠帮忙看看,谢谢!
#include <iostream>
using   namespace   std;
class   time
{   public:
time(){minute=0;sec=0;}
time(int   m,int   s):minute(m),sec(s){}
friend   time   operator++(time   &t);
void   display(){cout < <minute < < ": " < <sec < <endl;}
private:
int   minute;
int   sec;
};

  time   operator++(time   &t)
{   time   t1,t2;
  if(++t.sec> =60)
{t.sec-=60;
++t.minute;}
return   t1;//t1与上面的if语句没有任何关联,为何可以返回if语句的值?
}

void   main()
{time   time1(34,0);
for(int   i=0;i <61;i++)
{   ++time1;
      time1.display();}
}


[解决办法]
你反会的t1 是函数的返回值
为什么加的对,因为你传进去的是&t, t的值加了.
你这样写就明白了
void main()
{
time time1(34,0), time2;
for(int i=0;i <61;i++)
{
time2 = ++time1;
time1.display();
time2.display();
}
}


[解决办法]
同意楼上的!
[解决办法]
LZ的time operator++(time &t)的返回值根本就没有被引用, 是通过参数t改变了time1的值.
yelling描述的很清楚.

热点排行