====== Программа ====== ===== 1. Введение ===== - Объектно-ориентрованный подход - Содержание курса - История ОО языков ===== 2. Структуры и классы ===== - Инкапсуляция - Поля и методы - Права доступа - Определение класса в h, .hpp и в .cpp ===== 3. Создание и разрушение объектов ===== - Конструкторы (с move версиями) - Деструкторы - malloc/free и new/delete - RAII ===== 4. Исключения ===== - Стандартные типы исключений - Стратегии обработки исключений - Исключения в констуркторе / деструкторе ===== 5. Связность объектов ===== - Наследование - Агрегирование - Дружественность - Диаграмма классов ===== 6. Полиморфизм ===== - Переопределение и перегрузка функций - Mock-объекты при использовании интерфейсов - Динамический полиморфизм - RTTI ===== 7. Виды наследования ===== - Одиночное - Множественное - Виртуальное ===== 8. Умные указатели ===== - scoped_ptr - shared_ptr - weak_ptr - intrusive_ptr ===== 9. Перегрузка операторов ===== - Приоритет операций - Какие операторы можно перегружать - Перегрузка &&, ||, ‘,’ - Перегрузка [] и () ===== 10. Шаблоны функций и классов - 1 ===== - Вывод шаблонных параметров из аргументов функций - Ленивая компиляция шаблонов - Использование зависимых имён - Наследование шаблонных классов ===== 11. Шаблоны функций и классов - 2 ===== - Полная специализация шаблонов - Классы свойств (Traits) - Частичная специализация шаблонов - Статический полиморфизм VS динамический полиморфизм на примере паттерна стратегия ===== 12. Шаблоны функций и классов - 3 ===== - Метапрограммирование с использованием шаблонов - SFINAE - С++11 (using вместо typedef в шаблонах, variadic templates) ===== 13. Шаблоны проектирования ===== - Область применения шаблонов - Порождающие паттерны - Структурные паттерны - Поведенческие паттерны ~~DISCUSSION~~