C++运算符重载,时钟类
代码如下:
#include<iostream>
using namespace std;
class CClock
{
public:
CClock(int NewH = 0, int NewM = 0, int NewS = 0)//构造函数对三个对象时分秒进行初始化
{
Hour = NewH;
Minute = NewM;
Second = NewS;
}
void ShowTime()
{
cout << Hour << ":" << Minute << ":" << Second << endl;
}
CClock operator++();//前置单目运算符重载 返回增加后的时间值
CClock operator++(int);//后置单目运算符重载 返回增加后的是时间值
private:
int Hour;
int Minute;
int Second;
};
CClock CClock::operator++()
{
Second++;//秒加一
if (Second >= 60)//判断秒有没有到60,若Second>=60 Minute加一秒减去60
{
Second = Second - 60;
Minute++;
if (Minute >= 60)//判断分有没有到60,若Minute>=60 Hour加一分减去60
{
Minute = Minute - 60;
Hour++;
Hour = Hour % 24;//使用24小时制,将时间对24取余
}
return *this;//返回运算后的结果
}
}
CClock CClock::operator++(int)//后置单目运算符重载
{
CClock old = *this;
++(*this);//调用前置++运算符
return old;
}
void main()
{
CClock myClock(23, 59, 59);
cout << "First time output:";
myClock.ShowTime();
cout << "Show myClock++:";
(myClock++).ShowTime();//返回值是old 并没有加加了的是this
cout << "Show ++myClock:";
(++myClock).ShowTime();
}