美文网首页
1.2.17_C++ ++ 和 -- 运算符重载

1.2.17_C++ ++ 和 -- 运算符重载

作者: 资深小夏 | 来源:发表于2017-06-29 23:15 被阅读5次

    C++ 重载运算符和重载函数

    递增运算符( ++ )和递减运算符( -- )是 C++ 语言中两个重要的一元运算符。

    下面的实例演示了如何重载递增运算符( ++ ),包括前缀和后缀两种用法。类似地,您也可以尝试重载递减运算符( -- )。

    #include <iostream>
    using namespace std;
     
    class Time
    {
       private:
          int hours;             // 0 到 23
          int minutes;           // 0 到 59
    
       public:
          // 所需的构造函数
          Time(){
             hours = 0;
             minutes = 0;
          }
    
          Time(int h, int m){
             hours = h;
             minutes = m;
          }
    
          // 显示时间的方法
          void displayTime()
          {
             cout << "H: " << hours << " M:" << minutes <<endl;
          }
    
          // 重载前缀递增运算符( ++ )
          Time operator++ ()  
          {
             ++minutes;          // 对象加 1
             if(minutes >= 60)  
             {
                ++hours;
                minutes -= 60;
             }
             return Time(hours, minutes);
          }
    
          // 重载后缀递增运算符( ++ )
          Time operator++( int )         
          {
             // 保存原始值
             Time T(hours, minutes);
             // 对象加 1
             ++minutes;                    
             if(minutes >= 60)
             {
                ++hours;
                minutes -= 60;
             }
             // 返回旧的原始值
             return T; 
          }
    };
    
    int main()
    {
       Time T1(11, 59), T2(10,40);
     
       ++T1;                    // T1 加 1
       T1.displayTime();        // 显示 T1
       ++T1;                    // T1 再加 1
       T1.displayTime();        // 显示 T1
     
       T2++;                    // T2 加 1
       T2.displayTime();        // 显示 T2
       T2++;                    // T2 再加 1
       T2.displayTime();        // 显示 T2
       return 0;
    }
    

    当上面的代码被编译和执行时,它会产生下列结果:

    H: 12 M:0
    H: 12 M:1
    H: 10 M:41
    H: 10 M:42
    

    代码链接:https://github.com/karst87/cpp/tree/master/learning/com.runoob

    相关文章

      网友评论

          本文标题:1.2.17_C++ ++ 和 -- 运算符重载

          本文链接:https://www.haomeiwen.com/subject/zmovcxtx.html