- Зачем использовать Git: контроль версий и совместная работа
- Основные команды:
git init,git add,git commit,git status,git push,git pull - Создание репозитория для курса
- Основы работы с GitHub: создание и клонирование репозиториев
- Основы работы с
.gitignore
- Основные концепции ООП: классы, объекты, наследование, инкапсуляция, полиморфизм
- Создание и использование классов и объектов в C++
- Конструкторы и деструкторы
- Наследование и работа с иерархиями классов
- Виртуальные функции и полиморфизм
if constexprи inline функции- Авто-определение типа (
auto) - Упрощение лямбда-выражений
- Создание и использование пространств имен
- Понимание и использование заголовочных файлов
- Применение
#include,#define,#pragma once
std::optional,std::variant,std::any- Примеры применения и когда использовать эти типы
- JSON
- Основы шаблонов: функции и классы
- Специализация шаблонов и её использование
- Метапрограммирование с шаблонами
- Основы работы с потоками:
std::thread
- Контейнеры:
std::vector,std::list,std::map,std::set - Стандартные алгоритмы:
std::sort,std::find,std::accumulate - Практические примеры использования
constexprфункции и их использование- Раннее вычисление выражений (compile-time evaluation)
- Расширенные возможности работы с типами (structured bindings, fold expressions)
- Разница между сырыми указателями и умными указателями
std::unique_ptr,std::shared_ptr,std::weak_ptr- Примеры использования и общие ошибки
- Синхронизация потоков:
std::mutex,std::lock_guard - Примеры простых многопоточных приложений
- Реализация итогового проекта, использующего ключевые элементы C++17
- Обсуждение и анализ кода
- Подведение итогов и дальнейшее развитие