源程序:
#include<iostream>
using namespace std;
class CTime
{
private:
/*unsigned short */int hour;
/*unsigned short */int minute;
/*unsigned short */int second;
public:
CTime(int h = 0, int m =0, int s = 0);
// void setTime(int h, int m, int s);//不知道有啥用···
void display();
//比较运算符(二目)的重载
bool operator > (CTime &t);
bool operator < (CTime &t);
bool operator >= (CTime &t);
bool operator <= (CTime &t);
bool operator == (CTime &t);
bool operator != (CTime &t);
//二目运算符的重载
CTime operator+(CTime &c);//返回c所规定的时·分·秒后的时间
CTime operator-(CTime &c);
CTime operator+(int s);
CTime operator-(int s);
//一目运算符的重载
CTime operator ++(int);//后置++,下一秒
CTime operator ++();//前置++,下一秒,前置与后置返回值不一样
CTime operator --(int);//后置--,前一秒
CTime operator --();//前置--,前一秒
//赋值运算符的重载
CTime operator +=(CTime &c);
CTime operator -=(CTime &c);
CTime operator +=(int s);
CTime operator -=(int s);
};
void CTime::display()
{
cout << hour << ":" << minute << ":" << second << endl;
return;
}
CTime::CTime(int h , int m, int s)
{
hour = h;
minute = m;
second = s;
}
bool CTime::operator >(CTime &t)
{
if(hour > t.hour)
{
return true;
}
else
{
if(minute > t.minute)
{
return true;
}
else
{
if(second > t.second)
{
return true;
}
else
{
return false;
}
}
}
}
bool CTime::operator <(CTime &t)
{
if(hour < t.hour)
{
return true;
}
else
{
if(minute < t.minute)
{
return true;
}
else
{
if(second < t.second)
{
return true;
}
else
{
return false;
}
}
}
}
bool CTime::operator >=(CTime &t)
{
if(hour >= t.hour)
{
return true;
}
else
{
if(minute >= t.minute)
{
return true;
}
else
{
if(second >= t.second)
{
return true;
}
else
{
return false;
}
}
}
}
bool CTime::operator <=(CTime &t)
{
if(hour <= t.hour)
{
return true;
}
else
{
if(minute <= t.minute)
{
return true;
}
else
{
if(second <= t.second)
{
return true;
}
else
{
return false;
}
}
}
}
bool CTime::operator ==(CTime &t)
{
if(hour == t.hour)
{
return true;
}
else
{
if(minute == t.minute)
{
return true;
}
else
{
if(second == t.second)
{
return true;
}
else
{
return false;
}
}
}
}
bool CTime::operator !=(CTime &t)
{
if(hour != t.hour)
{
return true;
}
else
{
if(minute != t.minute)
{
return true;
}
else
{
if(second != t.second)
{
return true;
}
else
{
return false;
}
}
}
}
CTime CTime::operator +(CTime &c)
{
CTime c1;
c1.hour = hour + c.hour;
c1.minute = minute + c.minute;
c1.second = second + c.second;
if(c1.second >= 60)
{
c1.second = c1.second - 60;
c1.minute = c1.minute + 1;
}
if(c1.minute >= 60)
{
c1.minute = c1.minute - 60;
c1.hour = c1.hour + 1;
}
if(c1.hour >= 24)
{
c1.hour = c1.hour -24;
}
return c1;
}
CTime CTime::operator -(CTime &c)
{
CTime c1;
c1.hour = hour - c.hour;
c1.minute = minute - c.minute;
c1.second = second - c.second;
if(c1.second < 0)
{
c1.second = 60 + c1.second;
c1.minute = c1.minute - 1;
}
if(c1.minute < 0)
{
c1.minute =60 + c1.minute;
c1.hour = c1.hour -1;
}
if(c1.hour < 0)
{
c1.hour = 24 + c1.hour;
}
return c1;
}
CTime CTime::operator +(int s)
{
CTime c1;
c1.hour = hour;
c1.minute = minute;
c1.second = second + s;
if(c1.second >= 60)
{
c1.minute = c1.minute + (c1.second / 60);
c1.second = c1.second % 60;
}
if(c1.minute >= 60)
{
c1.hour = c1.hour + (c1.minute / 60);
c1.minute = c1.minute % 60;
}
if(c1.hour >= 24)
{
c1.hour = c1.hour % 24;
}
return c1;
}
CTime CTime::operator -(int s)
{
CTime c1;
c1.hour = hour;
c1.minute = minute;
c1.second = second - s;
if(c1.second < 0)
{
c1.minute = c1.minute - 1 - (-c1.second / 60);
c1.second = 60 + c1.second % 60;
}
if(c1.minute < 0)
{
c1.hour = c1.hour - 1 - (-c1.minute / 60);
c1.minute = 60 + c1.minute % 60;
}
if(c1.hour < 0)
{
c1.hour = 24 + c1.hour;
}
return c1;
}
CTime CTime::operator ++(int)//定义后置自增运算符 "++"重载函数
{
CTime temp(* this);
second ++;
if(second >= 60)
{
second = second -60;
++ minute;
}
if(minute >= 60)
{
minute = minute - 60;
++ hour;
}
if(hour >= 24)
{
hour = hour - 24;
}
return temp;
}
CTime CTime::operator ++()//定义前置自增运算符"++"重载函数
{
if(++ second >= 60)
{
second = second -60;
++ minute;
if(minute >= 60)
{
minute = minute -60;
++ hour;
if(hour >= 24)
{
hour = hour - 24;
}
}
}
return * this;
}
CTime CTime::operator --(int)//定义后置自增运算符 "--"重载函数
{
CTime temp(* this);
second --;
if(second <= 0)
{
second = 60 + second;
-- minute;
}
return temp;
}
CTime CTime::operator --()//定义前置自增运算符"--"重载函数
{
if(-- second <= 0)
{
second = 60 + second;
-- minute;
}
return * this;
}
CTime CTime::operator +=(CTime &c)
{
hour = hour + c.hour;
minute = minute + c.minute;
second = second + c.second;
if(second >= 60)
{
second = second - 60;
minute = minute + 1;
}
if(minute >= 60)
{
minute = minute - 60;
hour = hour + 1;
}
if(hour >= 24)
{
hour = hour -24;
}
return * this;//从定义前置"++" 来的灵感··int
}
CTime CTime::operator -=(CTime &c)
{
hour = hour - c.hour;
minute = minute - c.minute;
second = second - c.second;
if(second < 0)
{
second = 60 + second;
minute = minute - 1;
}
if(minute < 0)
{
minute =60 + minute;
hour = hour -1;
}
if(hour < 0)
{
hour = 24 + hour;
}
return * this;
}
CTime CTime::operator +=(int s)
{
hour = hour;
minute = minute;
second = second + s;
if(second >= 60)
{
minute = minute + (second / 60);
second = second % 60;
}
if(minute >= 60)
{
hour = hour + (minute / 60);
minute = minute % 60;
}
if(hour >= 24)
{
hour = hour % 24;
}
return * this;
}
CTime CTime::operator -=(int s)
{
hour = hour;
minute = minute;
second = second - s;
if(second < 0)
{
minute = minute - 1 - (-second / 60);
second = 60 + second % 60;
}
if(minute < 0)
{
hour = hour - 1 - (-minute / 60);
minute = 60 + minute % 60;
}
if(hour < 0)
{
hour = 24 + hour;
}
return * this;
}
main()
{
CTime c1(13, 13, 13),
c2(13, 13, 13),
c3(15, 15, 15),
c4(15, 15, 15),
c5(11, 47, 13),
c6, c7, c8,
c9(12,59,59),
c10(12, 59, 59),
c11(14, 14, 14),
c12(10, 46, 46),
c13(12, 23, 34),
c14(12, 23, 32),
c15(21, 32, 42),
c16(14, 15, 16);
cout <<"c1 = ";
c1.display();
cout << "c2 = ";
c2.display();
cout << "c3 = ";
c3.display();
cout << "c4 = ";
c4.display();
cout << "c5 = ";
c5.display();
cout << "c1 > c2" << (c1.operator >(c2)?" 成立":" 不成立") << endl;
cout << "c3 < c4" << (c3.operator <(c4)?" 成立":" 不成立") << endl;
cout << "c1 >= c2" << (c1.operator >=(c2)?" 成立":" 不成立") << endl;
cout << "c1 <= c2" << (c1.operator <=(c2)?" 成立":" 不成立") << endl;
cout << "c1 == c2" << (c1.operator ==(c2)?" 成立":" 不成立") << endl;
cout << "c3 != c4" << (c3.operator !=(c4)?" 成立":" 不成立") << endl;
c6 = c1 + c5;
cout << "c1 + c5 = ";
c6.display();
c7 = c1 - c5;
cout << "c1 - c5 = ";
c7.display();
c8 = c1 - 240;
cout << "c1 - 240 = ";
c8.display();
cout << "c9 = ";
c9.display();
c9 ++;
cout << "c9++ = ";
c9.display();
cout << "c10 = ";
c10.display();
++ c10;
cout << "++c10 = ";
c10.display();
cout << "c11 = ";
c11.display();
cout << "c12 = ";
c12.display();
c11 += c12;
cout << "(c11 += c12) = ";
c11.display();
cout << "c13 = ";
c13.display();
cout << "c14 = ";
c14.display();
c13 -= c14;
cout << "(c13 -= c14) = ";
c13.display();
cout << "c15 = ";
c15.display();
cout << "c16 = ";
c16.display();
c15 += 18;
cout<< "(c15 += 18) = ";
c15.display();
c16 -= 16;
cout << "(c16 -= 16) = ";
c16.display();
system("pause");
return 0;
}
截图:
呵呵···瞧这输出···好多···一点一点的终于啃完了这块大骨头···虽然不少地方是复制粘贴的···可有些地方必须经过修改才可以的···今天敲这些代码时一位学长看到我敲得后说了句:“我要是你肯定没这耐性敲这么多代码···”我刚要高兴···他又说···:“我用**(没听明白)插件很快就能敲完这些的···”搞得我真不知道是该高兴还是该晕倒···の···