using namespace std;
class Time
{
private:
int hour,minute,second;
public:
Time(int h,int m,int s);
friend Time&operator++(Time &t);//返回引用是为了实现连续自增
void display();
};
Time::Time(int h,int m,int s):hour(h),minute(m),second(s)
{
if(hour>=24)hour=0;
if(minute>=60)minute=0;
if(second>=60)second=0;
}
void Time::display()
{
cout<<hour<<":"<<minute<<":"<<second<<endl;
}
Time &operator++(Time &t)
{
++t.second;
if(t.second>=60)
{
t.second=0;
++t.minute;
if(t.minute>=60)
{
t.minute=0;
++t.hour;
if(t.hour>=24)t.hour=0;
}
}
return t;
}
int main()
{
Time t1(23,59,59);
t1.display();
++t1;
t1.display();
return 0;
}
下面的这种情况则不能实现连续自增
#include<iostream>
using namespace std;
class Time
{
private:
int hour,minute,second;
public:
Time(int h,int m,int s);
friend Time operator++(Time t);
void display();
};
Time::Time(int h,int m,int s):hour(h),minute(m),second(s)
{
if(hour>=24)hour=0;
if(minute>=60)minute=0;
if(second>=60)second=0;
}
void Time::display()
{
cout<<hour<<":"<<minute<<":"<<second<<endl;
}
Time operator++(Time t)
{
++t.second;
if(t.second>=60)
{
t.second=0;
++t.minute;
if(t.minute>=60)
{
t.minute=0;
++t.hour;
if(t.hour>=24)t.hour=0;
}
}
return t;
}
int main()
{
Time t1(23,59,59);
t1.display();
t1=++t1;
t1.display();
return 0;
}
参考文献:C++.NET程序设计