C++ Перегрузка унарных операторов

Перегрузка операторов и перегрузка функций в C++

Унарные операторы работают только с одним операндом. Ниже приведены примеры унарных операторов:

Унарные операторы обычно располагаются слева от объектов, с которыми они работают, например !obj, -obj и ++obj, но иногда их также можно использовать в постфиксной форме, например obj++ или obj--.

В следующем примере показано, как перегрузить унарный оператор минус ( - ).

Пример

#include <iostream> using namespace std; class Distance { private: int feet; // от 0 до бесконечности int inches; // от 0 до 12 public: // Обязательный конструктор Distance(){ feet = 0; inches = 0; } Distance(int f, int i){ feet = f; inches = i; } // Метод для отображения расстояния void displayDistance() { cout << "F: " << feet << " I:" << inches <<endl; } // Перегрузка унарного оператора минус ( - ) Distance operator- () { feet = -feet; inches = -inches; return Distance(feet, inches); } }; int main() { Distance D1(11, 10), D2(-5, 11); -D1; // Взять отрицательное значение D1.displayDistance(); // Distance D1 -D2; // Взять отрицательное значение D2.displayDistance(); // Distance D2 return 0; }

Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:

F: -11 I:-10
F: 5 I:-11

Надеюсь, приведённый выше пример поможет вам лучше понять концепцию перегрузки унарного оператора. Аналогично вы можете попробовать перегрузить логический оператор НЕ ( ! ).

Перегрузка операторов и перегрузка функций в C++

Другие расширения