CPP-基础:单目运算符重载

关于++运算符前置和后置重载的实现实例:

 1 #include <iostream>
 2 using namespace std;
 3 //创建时钟类
 4 class Clock
 5 {
 6 public:
 7      Clock(int NewH=0,int NewM=0,int NewS=0);//构造函数
 8      void ShowTime();//显示时间函数声明
 9      Clock& operator ++();//前置运算符重载
10      Clock operator ++(int);//后置运算符重载
11      //关于前置运算符的后置运算符的重载说明:如果后面的括号里带有形参则为后置单目运算符重载,或无形参则为前置单目运算符重载
12 private:
13      int Hour,Minute,Second;
14 };
15 //构造函数实现
16 Clock::Clock(int NewH,int NewM,int NewS)
17 {
18      if(0<=NewH && NewH<24 && 0<=NewM&&NewM<60&&0<=NewS && NewS<60)
19      {
20         Hour = NewH;
21         Minute=NewM;
22         Second=NewS;
23      }
24      else
25           cout<<"Time error!"<<endl;
26 }
27 //显示时间函数实现
28 void Clock::ShowTime()
29 {
30      cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
31 }
32 //前置单目运算符重载实现
33 Clock& Clock::operator ++()//前置单目运算符重载函数
34 {
35      Second++;
36      if(Second>=60)
37      {
38           Second = Second-60;
39           Minute++;
40           if(Minute>=60)
41           {
42                Minute = Minute - 60;
43                Hour++;
44                Hour=Hour%24;
45           }
46      }
47      return *this;
48 }
49 //后置单目运算符重载实现
50 Clock Clock::operator ++(int)//后置单目运算符重载
51 {
52      Clock old = *this;
53      ++(*this);
54      return old;  //返回自加前的对象。
55 }
56 
57 void main()
58 {
59      Clock myClock(23,59,59);
60      cout<<"First time output:";
61      myClock.ShowTime();
62
63 cout<<"Show myClock++:"; 64 (myClock++).ShowTime();
65
66 cout<<"Show ++myClock:"; 67 (++myClock).ShowTime(); 68 }

  在程序中对运算符“++”进行了重载,使它能用于Clock类对象。“++”和“--”运算符有两种使用方式,前置自增运算符和后置自增运算符。它们的作用是不一样的,在重载时怎样区别这二者呢?针对“++”和“--”这一特点,C++约定:

在自增(自减)运算符重载函数中,增加一个int型形参,就是后置自增(自减)运算符函数。

请注意前置自增运算符“++”和后置自增运算符“++”二者作用的区别。前置重载是先自加,返回的是修改后的对象本身。后者返回的是自加前的对象,然后对象自加。重载后置自增运算符时,多了一个int型的参数,增加这个参数只是为了与前置自增运算符重载函数有所区别,此外没有任何作用。编译系统在遇到重载后置自增运算符时,会自动调用此函数。

 

转载于:https://www.cnblogs.com/CPYER/p/3286671.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值