## “++”和“--”的重载分为前置和后置,而不同的方式各有不同,这是我在wustoj上面写到的题目,wustoj1410题,以下是代码,供自己以后翻阅参考
这是自己写的第一篇博客,自己是一个弱鸡,和那些神犇相差太远,本来不想写的,后来发现写博客有助于自己的记忆,所以我为了以后更好的学习,就一直写下去吧
#include<iostream>//second=j%60; minute=j%3600/60; hour=j/3600%24;
using namespace std;
class Clock
{
public:
Clock (int a=0,int b=0,int c=0):hour(a),minute(b),second(c){
}
Clock operator +(int n)
{
int sum=hour*3600+minute*60+second+n;
int ta,tb,tc;
ta=sum/3600%24;
tb=sum%3600/60;
tc=sum%60;
return Clock(ta,tb,tc);
}
Clock operator -(int n)
{
int sum=hour*3600+minute*60+second-n;
int ta,tb,tc;
ta=sum/3600%24;
tb=sum%3600/60;
tc=sum%60;
return Clock(ta,tb,tc);
}
int operator -(const Clock & t)
{
int sum=hour*3600+minute*60+second-(t.hour*3600+t.minute*60+t.second);
return sum;
}
Clock operator ++ (int )
{
Clock temp=*this;
int sum=hour*3600+minute*60+second+1;
this->hour=sum/3600%24;
this->minute=sum%3600/60;
this->second=sum%60;
return temp;
}
Clock operator -- (int )
{
Clock temp=*this;
int sum=hour*3600+minute*60+second-1;
if(sum<0) sum+=24*3600;
this->hour=sum/3600%24;
this->minute=sum%3600/60;
this->second=sum%60;
return temp;
}
Clock & operator ++ ()
{
int sum=hour*3600+minute*60+second+1;
this->hour=sum/3600%24;
this->minute=sum%3600/60;
this->second=sum%60;
return *this;
}
Clock & operator -- ()
{
int sum=hour*3600+minute*60+second-1;
if(sum<0) sum+=24*3600;
this->hour=sum/3600%24;
this->minute=sum%3600/60;
this->second=sum%60;
return *this;
}
void Show()
{
cout<<hour<<":"<<minute<<":"<<second<<endl;
}
private:
int hour;
int minute;
int second;
};
int main()
{
Clock c1(23,59,59),c2,c3;
c1.Show(); c2.Show(); c3.Show();
c2=c1+500; c3=c1-1000;
c1.Show(); c2.Show(); c3.Show();
c2=c1++; c3=++c1;
c1.Show(); c2.Show(); c3.Show();
c2=c1--; c3=--c1;
c1.Show(); c2.Show(); c3.Show();
Clock c4(8,21,35),c5(18,21,36);
c4.Show(); c5.Show();
cout<<c1-c4<<endl;
cout<<c4-c5<<endl;
return 0;
}