C++ 增量++和减-重载

  • 增量++和减-重载

    增量(++)和减量(-)运算符是C++中可用的两个重要的一元运算符。下面的示例说明如何为前缀以及后缀用法重载增量(++)运算符。同样,您可以重载运算符(-)。
    
    #include <iostream> 
    
    using namespace std;
     
    class Time {
       private:
          int hours;             // 0 to 23
          int minutes;           // 0 to 59
          
       public:
          // required constructors
          Time() {
             hours = 0;
             minutes = 0;
          }
          Time(int h, int m) {
             hours = h;
             minutes = m;
          }
          
          // method to display time
          void displayTime() {
             cout << "H: " << hours << " M:" << minutes << endl;
          }
          
          // overloaded prefix ++ operator
          Time operator++ () {
             ++minutes;          // increment this object
             if(minutes >= 60) {
                ++hours;
                minutes -= 60;
             }
             return Time(hours, minutes);
          }
          
          // overloaded postfix ++ operator
          Time operator++( int ) {
          
             // save the orignal value
             Time T(hours, minutes);
             
             // increment this object
             ++minutes;                    
             
             if(minutes >= 60) {
                ++hours;
                minutes -= 60;
             }
             
             // return old original value
             return T; 
          }
    };
    
    int main() {
       Time T1(11, 59), T2(10,40);
     
       ++T1;                    // increment T1
       T1.displayTime();        // display T1
       ++T1;                    // increment T1 again
       T1.displayTime();        // display T1
     
       T2++;                    // increment T2
       T2.displayTime();        // display T2
       T2++;                    // increment T2 again
       T2.displayTime();        // display T2
       return 0;
    }
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    H: 12 M:0
    H: 12 M:1
    H: 10 M:41
    H: 10 M:42