Содержание
Программа
1. Введение
2. Структуры и классы
3. Создание и разрушение объектов
4. Исключения
5. Связность объектов
6. Полиморфизм
7. Виды наследования
8. Умные указатели
9. Перегрузка операторов
10. Шаблоны функций и классов - 1
11. Шаблоны функций и классов - 2
12. Шаблоны функций и классов - 3
13. Шаблоны проектирования
Обсуждение
Программа
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. Шаблоны проектирования
Область применения шаблонов
Порождающие паттерны
Структурные паттерны
Поведенческие паттерны