13. Суперсила C++: перегрузка операторов | ООП 2026
Алексей Малов (лекции по программированию)
0:00 / 0:00
13. Суперсила C++: перегрузка операторов | ООП 2026
651 просмотр · 1 месяц назад
Алексей Малов (лекции по программированию)
6,31 тыс. подписчиков
651 просмотр · 1 месяц назад
Курс "Объектно-ориентированное программирование" специальность 09.03.04 "Программная инженерия", 2 курс.
Про подготовку программистов в Институте iSpring здесь: https://ispring.institute/software-en...
В этой лекции начинаем разбирать перегрузку операций в C++ — механизм, который позволяет пользовательским типам работать так же естественно, как встроенные: складываться, сравниваться, выводиться в поток и участвовать в привычных выражениях.
Разберём не только синтаксис перегрузки операторов, но и главное — как проектировать их правильно, чтобы код становился понятнее, а поведение типов оставалось предсказуемым.
В этом видео мы поговорим о:
дружественных функциях и классах и ключевом слове friend;
выборе между оператором-методом, внешней и `friend`-функцией;
перегрузке арифметических операторов +, -, *, /;
правильной реализации составных операций вроде +=;
унарных + и -;
операторах сравнения ==, != и операторе spaceship из C++20;
strong_ordering, weak_ordering и partial_ordering;
перегрузке операторов ввода и вывода из потоков;
создании типобезопасных маркированных типов;
применении перегрузки операторов для идентификаторов и денежных величин;
пользовательских литералах.
На примерах классов Vector2D, Rational, денежных типов и идентификаторов посмотрим, как перегрузка операций помогает приблизить код к предметной области и позволяет компилятору обнаруживать ошибки ещё на этапе компиляции.
Отдельное внимание уделим ситуациям, когда оператор не стоит перегружать, почему friend не должен становиться способом обхода инкапсуляции и почему математически корректная семантика важнее красивого синтаксиса.
Лекция будет полезна тем, кто уже знаком с основами C++ и хочет научиться проектировать пользовательские типы с удобным, выразительным и типобезопасным интерфейсом.
Полезные ссылки:
Примеры кода, конспекты, практические задания по курсу ООП: https://github.com/alexey-malov/oop
Мой канал в Telegram, чтобы оставаться на связи: https://t.me/vivid_coding
Поддержать меня на Boosty: https://boosty.to/vivid-bw
Тайм-коды:
0:00 — Дружественные функции и классы
10:30 — Введение в перегрузку операторов
17:33 — Перегрузка арифметических операторов
42:32 — Перегрузка операторов сравнения
53:04 — Типы порядка
58:48 — Перегрузка операторов потокового ввода-вывода
1:05:34 — Повышаем типобезопасность за счёт маркированных типов
1:27:20 — Пользовательские литералы (user defined literals)
В за ставке использована композиция "Папа может в Си" музыкального коллектива "Научно-технический рэп" (https://vk.com/nii_rap)