读书人

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

发布时间: 2012-02-26 20:19:44 作者: rapoo

关于重载运算符函数返回值的困惑
请各位大侠帮忙看看,谢谢!
#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描述的很清楚.

读书人网 >C++

热点推荐