运算符号重载:前置与后置单目运算++

区别:就在于函数的形参,语法规定,前置单目运算符重载为成员函数时没有形参,后置单目运算符重

重载为成员函数时需要一个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 ++()    //前置++,如++n,最后返回的是n.使用对象的引用
{
       Second++;
       if(Second>=60)
       {
            Second=Second-60;
            Minute++;
        if(Minute>=60)
        {
           Minute=Minute-60;
         Hour++;
         Hour=Hour%24;
        }
    }
  return *this;
}

Clock Clock::operator ++(int)  //后置++,如n++,返回的是运算前的对象值n,不用引用。
{
  Clock old=*this;
  ++(*this);
  return old;
}
int main()
{
        Clock myClock(23,59,59);
        cout<<"Frist time output:";
        myClock.ShowTime();
        cout<<"show myClock++:";
        (myClock++).ShowTime();
        cout<<"show ++myClock:";
        (++myClock).ShowTime();
}            

注意:符号重载并不能改变符号的优先级,其中(),[],->, = 必须重载为类的成员函数,不能是普通的全局函数

 

转载于:https://www.cnblogs.com/lovemo1314/archive/2011/10/02/2198075.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值