17. Шаблоны C++ - 1: один код для разных типов | ООП 2026
Курс "Объектно-ориентированное программирование" специальность 09.03.04 "Программная инженерия", 2 курс. Про подготовку программистов в Институте iSpring здесь: https://ispring.institute/software-engineering Шаблоны — один из ключевых механизмов C++, лежащий в основе обобщённого программирования и значительной части стандартной библиотеки. В первой части лекции разбираемся, как писать алгоритмы и классы, которые работают с разными типами данных без дублирования кода, и что на самом деле происходит с шаблонами во время компиляции. В лекции: идея обобщённого программирования и мотивация использования шаблонов; шаблоны функций и классов; почему шаблоны позволяют создавать абстракции без дополнительных runtime-расходов; шаблонные операторы и методы классов; нетиповые параметры шаблонов и compile-time конфигурация; полная и частичная специализация шаблонов; создание собственных type traits; if constexpr и вычисления на этапе компиляции; специализация std::hash для пользовательских типов и особенности std::vector от bool; чем специализация шаблонной функции отличается от обычной перегрузки и почему перегрузка часто оказывается предпочтительнее; применение шаблонов для построения типобезопасного класса конфигурации; взаимодействие шаблонов с наследованием; CRTP и статический полиморфизм без виртуальных функций; миксины на основе CRTP; использование шаблонов для устранения дублирования кода в иерархиях классов. На практических примерах посмотрим, как компилятор инстанцирует шаблоны, почему вывод типов иногда приводит к неожиданным результатам и как шаблоны позволяют переносить часть логики и проверок из runtime в compile time. Лекция рассчитана на тех, кто уже знаком с основами C++ и хочет глубже понять механизм шаблонов и научиться применять его не только для контейнеров и простых generic-функций, но и при проектировании классов и библиотек. Полезные ссылки: Примеры кода, конспекты, практические задания по курсу ООП: https://github.com/alexey-malov/oop Мой канал в Telegram, чтобы оставаться на связи: https://t.me/vivid_coding Поддержать меня на Boosty: https://boosty.to/vivid-bw Тайм-коды: 0:00 — Что такое обобщённое программирование 4:17 — Шаблоны функций 9:32 — Шаблоны классов 11:56 — Шаблонные операторы 15:45 — Нетиповые параметры шаблонов 20:10 — Специализация шаблонов 25:10 — Пример: Type Traits 34:29 — Частичная специализация шаблонов 36:02 — Примеры специализации шаблонов в Стандартной библиотеке C++ 41:56 — Сравнение перегрузки функций и специализации шаблонов? 1:00:06 — Шаблонные методы класса 1:09:01 — Применяем шаблоны для создания класса Config 1:21:54 — Шаблоны и наследование, идиома CRTP 1:31:21 — Наследование шаблонного класса от простого 1:37:20 — Наследование простых классов от шаблонных 1:45:09 — Заключение В заставке использована композиция "Папа может в Си" музыкального коллектива "Научно-технический рэп" (https://vk.com/nii_rap). Анимация взрыва создана при помощи Алиса AI.
Название:
17. Шаблоны C++ - 1: один код для разных типов | ООП 2026
Категория:
Разное