C++ 一元运算符重载

  • 一元运算符重载

    一元运算符对单个操作数进行运算,以下是一元运算符的示例-
    • 递增(++)和递减(--)运算符。
    • 一元减(-)运算符。
    • 逻辑非(!)运算符。
    一元运算符对调用它们的对象进行操作,通常,该运算符出现在对象的左侧,如!obj,-obj和++obj一样,但有时它们也可以用作后缀,就像obj++或obj--。
    下面的示例说明如何在前缀和后缀用法中重载减号(-)运算符。
  • C++中的函数重载

    在同一个作用域中,可以为同一个函数名具有多个定义。函数的定义必须在参数列表中的参数类型和/或数量上彼此不同。您不能重载仅在返回类型上有所不同的函数声明。以下是使用相同函数print()打印不同数据类型的示例-
    
    #include <iostream>
    using namespace std;
     
    class Distance {
       private:
          int feet;             // 0 to infinite
          int inches;           // 0 to 12
          
       public:
          // required constructors
          Distance() {
             feet = 0;
             inches = 0;
          }
          Distance(int f, int i) {
             feet = f;
             inches = i;
          }
          
          // method to display distance
          void displayDistance() {
             cout << "F: " << feet << " I:" << inches << endl;
          }
          
          // overloaded minus (-) operator
          Distance operator- () {
             feet = -feet;
             inches = -inches;
             return Distance(feet, inches);
          }
    };
    
    int main() {
       Distance D1(11, 10), D2(-5, 11);
     
       -D1;                     // apply negation
       D1.displayDistance();    // display D1
    
       -D2;                     // apply negation
       D2.displayDistance();    // display D2
    
       return 0;
    }
    
    尝试一下
    编译并执行上述代码后,将产生以下结果-
    
    F: -11 I:-10
    F: 5 I:-11
    
    希望上面的示例使您的概念更清楚,并且您可以将类似的概念应用于重载逻辑非(!)。