自增运算符++的重载问题
下面代码中的红色部分执行后,为什么将自加前的对象的值赋给time2(代码中的注释是书上印的,而且运行结果和书上说的一样,我就是这一行代码的功能不是很明白),求指教
#include <iostream>[color=#FF0000][/color]
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();
private:
int minute;
int sec;
};
void Time::display()
{cout<<minute<<":"<<sec<<endl;}
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),time2;
cout<<"time1:";
time1.display();
++ time1;
cout<<"++time1:";
time1.display();
time2=time1++; //将自加前的对象的值赋给time2
cout<<"time1++:";
time1.display();
cout<<"time2:";
time2.display();
return 0;
}
[解决办法]
因为是后置++,所以重载 Time Time::operator++(int),剩下的自己看代码吧
[解决办法]
up,1,看看 后置++,与前置--区别
2.看看重载++中对于后置于前置是如何处理的
[解决办法]
- C/C++ code
int i = 3;int j = 0;j = i++;cout << j << endl;//j = 3;cout << i << endl;//i = 4;