Курс по C++
ПРОГРАММА
Февраль
- Объектно-ориентированное программирование в C++. Четыре принципа ООП. Классы. Поля и методы класса. Специальные функции-члены класса. Идиома RAII. Умные указатели (smart pointers). Правило одного определения. Внутреннее и внешнее связывание.Разделение классов на интерфейс и реализацию. Пространства имён.
Особенности IDE JetBrains CLion. Система контроля версий Git и GitHub. Сдача заданий через GitHub.
- Перечисления. Друзья класса. Статические члены класса. Проектирование классов. Перегрузка операторов. Rvalue-ссылки. Перемещение. Перемещающие специальные функции-члены. Поверхностное и глубокое копирование. Класс Date.
- Наследование классов. Иерархии классов. Наследование интерфейса и реализации. Открытое и закрытое наследование. Композиция. Полиморфизм. Виртуальные функции. Абстрактный базовый класс (АБК). Множественное наследование. Виртуальные базовые классы.
- Паттерны проектирования. Адаптер и Декоратор.
Март
- Стандартная библиотека. Классы std::string и std::string_view. Потоки. Библиотека iostream. Иерархия классов потоков ввода-вывода. Файловые потоки ввода-вывода. Библиотека std::filesystem. Путь. Операции с директориями. Форматы обмена данными: JSON, XML.
- Шаблоны. Инстанцирование шаблона. Этапы трансляции шаблона. Перегрузка шаблонов функций. Полная и частичная специализация шаблона. Значения параметров шаблона по умолчанию. Нетиповые параметры шаблона.
- Последовательные контейнеры STL: array, vector, deque, list, forward_list. Специальные контейнеры и адаптеры контейнеров: stack, queue, priority_queue. Битовое множество std::bitset. Кортеж std::tuple.
- Ассоциативные упорядоченные и неупорядоченные контейнеры STL: set, map, unordered_set, unordered_map. Хэш-таблица и хэш-функция. Коллизии и способы их разрешения.
- Алгоритмы STL. Применение алгоритмов STL. Итераторы. Функциональные объекты. Генерация случайных чисел.
Апрель
- Обработка ошибок. Механизм исключений. Иерархия стандартных исключений. Проектирование пользовательских классов исключений. Особенности перехвата исключений. Логирование. Использование отладчика.
- Шаблоны: повторение основ. Вариативные шаблоны. Пакет параметров шаблона. Рекурсивная обработка пакета. Выражения свёртки.
- Метапрограммирование шаблонов. Вычисления времени компиляции. Рекурсивное инстанцирование шаблонов. Специализация шаблонов. Ключевое слово constexpr, условный оператор if constexpr.
- Контрольная.
Май
- Параллельное программирование. Многопоточное исполнение. Переключение контекста. Разработка параллельных программ. Синхронное и асинхронное исполнение. Параллельные алгоритмы.
- Синхронизация. Примитивы синхронизации. Мьютексы. Атомарные операции.
- Повторение.