РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
696 of 815 menu

Ключевое слово operator

Ключевое слово operator используется для перегрузки операторов. Перегрузка операторов позволяет задать новое поведение для стандартных операций (таких как сложение, сравнение, индексация) применительно к объектам пользовательских классов. Синтаксис перегрузки позволяет указать, как именно должен работать оператор: в первом параметре для бинарных операторов передается левый операнд, а во втором - правый. Для унарных операторов параметр один.

Синтаксис

// Перегрузка внутри класса return_type operator symbol (parameters) { // тело оператора } // Перегрузка вне класса (глобальная функция) return_type operator symbol (parameters) { // тело оператора }

Пример

Давайте создадим класс Point, представляющий точку на плоскости, и перегрузим оператор + для сложения двух точек. Координаты будут суммироваться:

#include <iostream> using namespace std; class Point { public: int x, y; Point(int x, int y) : x(x), y(y) {} // Перегрузка оператора + Point operator+(const Point& other) { return Point(x + other.x, y + other.y); } }; int main() { Point p1(1, 2); Point p2(3, 4); Point p3 = p1 + p2; cout << p3.x << " " << p3.y << endl; return 0; }

Результат выполнения кода:

4 6

Пример

Давайте перегрузим оператор == для сравнения двух объектов класса Point. Это позволит использовать привычный синтаксис сравнения:

#include <iostream> using namespace std; class Point { public: int x, y; Point(int x, int y) : x(x), y(y) {} // Перегрузка оператора == bool operator==(const Point& other) { return (x == other.x && y == other.y); } }; int main() { Point p1(1, 2); Point p2(1, 2); Point p3(3, 4); if (p1 == p2) { cout << "p1 and p2 are equal" << endl; } if (!(p1 == p3)) { cout << "p1 and p3 are not equal" << endl; } return 0; }

Результат выполнения кода:

"p1 and p2 are equal" "p1 and p3 are not equal"

Смотрите также

  • ключевое слово this,
    которое указывает на текущий объект класса
  • ключевое слово friend,
    которое дает доступ к приватным членам класса
  • ключевое слово explicit,
    которое запрещает неявное преобразование типов
  • ключевое слово constructor,
    который инициализирует объекты класса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить