您的位置:首页 > 其它

将单目运算符“++”重载为成员函数形式

2014-06-13 00:00 369 查看
对于前置单目运算符,重载函数没有形参,对于后置单目运算符,重载函数有一个int型形参。这个int型参数在函数体中并不使用,纯粹是用来区别前置与后置,因此参数表中可以只给出类型名,没有参数名。

#include <iostream>

using namespace std;

class Clock       //类定义
{
public:
Clock(int NewH=0,int NewM=0,int NewS=0);
void ShowTime();
Clock& operator ++ ();    //前置单目运算符重载
Clock operator ++(int);    //后置单目运算符重载
private:
int Hour,Minute,Second;
};
Clock::Clock(int NewH,int NewM,int NewS)
{
if(0<=NewH && NewH<24 && 0<=NewM && NewM<60 && 0<=NewS && NewS<60)
{
Hour=NewH;
Minute=NewM;
Second=NewS;
}
else
cout<<"Time error!"<<endl;
}
void Clock::ShowTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
}
Clock& Clock::operator ++ ()
{
Second++;
if(Second>=60)
{
Second=Second-60;
Minute++;
if(Minute>=60)
{
Minute=Minute-60;
Hour++;
Hour=Hour%24;
}
}
return *this;
}
Clock Clock::operator ++ (int)
{
Clock old= *this;
++(*this);
return old;
}
int main()
{
Clock myClock(23,59,59);
cout<<"First time output: ";
myClock.ShowTime();
cout<<"Show myClock++: ";
myClock++;
myClock.ShowTime();
cout<<"Show ++myClock: ";
(++myClock).ShowTime();

return 0;
}


程序运行结果为:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: