Читается в МИРЭА на кафедре ПО РЭА во 2 (часть 1) и 3 (часть 2) семестрах с 2021 г. Материалы к каждой лекции находятся в отдельной папке, пронумерованной в порядке чтения лекций на курсе, и состоят из презентации (вводная часть) и примеров с комментариями (основная часть, папка examples). Внутри папки examples примеры сгруппированы по темам лекции и пронумерованы в порядке обсуждения. Компиляция примеров: g++ <все файлы в папке с расширением *.cpp> Курс находится в процессе разработки.
- Парадигмы программирования.
- Объектно ориентированное программирование (ООП) в C++
- Объявление класса
- Инкапсуляция
- Классы и объекты
- Конструкторы по умолчанию и с параметрами; перегрузка конструкторов
- Состояние, поведение, идентичность
- Статические и константные свойства и методы
- Работа с объектами
- Деструкторы
- Классы vs структуры
- Принципы объектно-ориентированного проектирования
- Ссылки vs. указатели и базовый ввод/вывод
- Конструкторы копирования
- Наследование
- Порядок вызова конструкторов и деструкторов в иерархиях классов
- Ромбовидное наследование (diamond problem)
- Полиморфизм
- Доступ к объекту производного класса через указатель на базовый класс
- Виртуальные функции, полиморфные классы
- Чисто виртуальные функции, абстрактные классы
- Таблица виртуальных методов (vtable)
- Статический (времени компиляции) и динамичесий (времени выплнения) полиморфизм
- Фреймворк Qt и система сборки cmake
- Модули и инструменты фреймворка Qt
- Hello world с Qt. Цикл событий
- Основы работы с cmake
- Виджеты
- Иерархия классов Qt
- Сигналы, слоты и их соединение
- Процесс сборки проекта, использующего Qt: UIC и MOC
- Функции-друзья
- Препроцессор C++
- Опережающие определения и header guards
- Директивы препроцессора
- Указатель this
- Перегрузка операторов
- Способы завершения программы
- Обработка исключений:
- Синтаксис C++ для работы с исключениями
- Stack unwinding
- Исключения пользовательсикх типов и использование иерархий классов для обработки исключений
- Повторная генерация исключения
- Ограничения на тип и генерацию исключений
- Исключения и практика обработки ошибок
- Перегрузка операторов new и delete
- Инструкция new vs. operator new
- Перегрузки глобального оператора new
- Placement-new
- Перегрузка глобального оператора delete
- Обработка исключений при выделении памяти для объекта
- Lvalue vs. rvalue
- Семантика перемещения
- Правило трех и правило пяти
- Пропуск копии (copy elision)
- std::move
- glvalue, xlvalue, prvalue, etc
- Deleted functions
- Defaulted functions
- Шаблоны функций
- Шаблоны классов
- Умные указатели
- Правило нуля