深度理解前置运算符++、--后置运算符++、--的重载(二)

续前文,出现的结果请看代码return old的注解
#include
using namespace std;
class Clock //时钟类声明
{
public: //外部接口
Clock(int NewH=0, int NewM=0, int NewS=0);
void ShowTime();
Clock& operator ++(); //前置单目运算符++重载
Clock operator ++(int); //后置单目运算符++重载
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; //返回未进行加法的原值

}
Clock& Clock::operator --() //前置单目运算符重载–函数
{
if(Second0)
{
Second=59;
if(Minute
0)
{ Minute=59;
if(Hour==0)
{Hour=23;
}
else Hour=Hour-1;
}
else Minute=Minute-1;
}
else Second=Second-1;

return *this;

}
//后置单目运算符–重载
Clock Clock::operator --(int)
{ //注意形参表中的整型参数
Clock old=*this;
–(*this);
return old; //返回未进行减法的原值
}
//其它成员函数的实现略

void main()
{
Clock myClock(23,59,59);
cout<<“First time output:”;
myClock.ShowTime();
cout<<“Show myClock++:”;
(myClock++).ShowTime();
cout<<“Show ++myClock:”;
(++myClock).ShowTime();
cout<<“Show myClock–:”;
(myClock–).ShowTime();
cout<<“Show --myClock:”;
(–myClock).ShowTime();
}
如果将return old修改为return *this,则
运行结果为:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值