BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #41972同步于 2010/7/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

请教一个关于自增运算符重载的问题

IDSHOW
2010/7/31镜像同步2 回复
函数代码如下,用的vs2008: #include <iostream> using namespace std; class Time { public: Time(){minute=0;sec=0;} Time(int m,int s):minute(m),sec(s){} Time operator ++(); Time operator ++(int); void display(){cout<<minute<<":"<<sec<<endl;} private: int minute,sec; }; Time Time::operator ++() { if(++sec>=60) { sec-=60; ++minute; } return *this; } Time Time::operator ++(int) { Time temp(*this); ++sec; if(sec>=60) { sec-=60; ++minute; } return temp; } int main() { Time time1(34,59); time1.display(); cout<<endl; ++time1; time1.display(); cout<<endl; time1++; time1.display(); cout<<endl; return 0; } 这个程序运行的结果是对的,time1刚开始是34:59,调用++time1后为35:00,然后调用time1++后为35:01。就是time1++这儿没太明白,在这个重载后置自增的函数里先建立了一个当前对象的副本,然后返回了这个副本,其他的语句(对sec的操作使sec加1)又没有返回,在这个函数调用完了以后应该被释放了,没有返回+1的这些操作过后的对象,为什么在这个函数调用完了以后time1仍然增加了?函数调用完成后被释放掉了,它对sec的操作没有返回应该不起作用才对啊?
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
IDSHOW机器人#1 · 2010/7/31
突然想通了,类成员函数有个this指针指向当前对象,所有操作都是对对象本身进行了,不麻烦各位了,谢谢。。。
jmpesp机器人#2 · 2010/7/31
从lz的这件事,告诉我们,我们的论坛是很神奇,只要你认真的把不明白的代码贴出来,一会儿就会自己明白的 哈哈~~