Программа

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. Шаблоны функций и классов

Вывод шаблонных параметров из аргументов функций

Ленивая компиляция шаблонов

Использование зависимых имён

Наследование шаблонных классов

11. Частичная специализация шаблонов

Частичная специализация

Статический полиморфизм

Необходимость typename

SFINAE

12. Стиль кодирования

Советы по разработке понятного кода

Важность константности