zoukankan      html  css  js  c++  java
  • 运算符号重载:前置与后置单目运算++

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

    重载为成员函数时需要一个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();
    }            

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

  • 相关阅读:
    mysql复制那点事
    全排列问题
    56. Merge Interval
    2. Add Two Numbers
    20. Valid Parentheses
    121. Best Time to Buy and Sell Stock
    120. Triangle
    96. Unique Binary Search Trees
    91. Decode Ways
    72. Edit Distance
  • 原文地址:https://www.cnblogs.com/lovemo1314/p/2198075.html
Copyright © 2011-2022 走看看