Перейти к содержимому

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)