Cpp

Cpp

cat

Лекция 1

Введение в C++. Hello World! Переменные, функции, ввод-вывод, std::vector, std::string, std::map. Google C++ Style Guide.

Лекция 2

Структуры и массивы, указатели и ссылки. Передача параметров в функции, спецификатор const. RVO. Входные и выходные параметры, введение в move-семантику.

Лекция 3

Классы, конструкторы и деструкторы. Виртуальные функции и интерфейсы (примеры из библиотек protobuf/snappy).

Лекция 4

Шаблонные функции. Стандартные алгоритмы STL. Использование лямбда-функций.

Лекция 5

Динамическое управление памятью, проблемы при работе с динамической памятью (memory leak, use after free). Умные указатели, RAII, владение ресурсами. Автоматический поиск проблем работы с памятью.

Шаблонные классы.

Лекция 6

Контейнеры, итераторы. Реализация контейнера std::vector<T>. Юнит-тестирование кода. Библиотека catch.

Лекция 7

Обработка ошибок, error-code, исключения, assert-ы. Взаимодействие между RAII и исключениями.

Лекция 8

Отладка кода. Основные подходы к отладке на примере отладочной печати. Использование gdb, asan, strace. Запись логов.

Внутреннее устройство инструментов отладки.

Лекция 9

Архитектура и реализация фреймворка POCO.

Лекция 10

CMake. Сборка зависимостей, бинарная совместимость. Работа в больших проектах.

Лекция 11

Взаимодействие с C API. Zero-terminated строки. Межмодульное взаимодействие и паттерн ErrorOr.

Лекция 12

Бинарные уязвимости. Переполнение буффера на стеке.

Лекция 13

Оптимизации компилятора и Undefined behavior. Implementation defined behavior.

Примеры ассемблерного кода и оптимизаций различными компиляторами.

Лекция 14.

Реализации строки. Особенности std::deque. std::function.

Report Page