Программа курса:
1. Механизм RTTI (Run-Time Type Identification)
· Оператор static_cast и указатели.
· Динамическая идентификация типа. Подключение RTTI.
· Оператор typeid и класс type_info.
· Оператор dynamic_cast.
2. Исключения
· Что такое исключительные ситуации.
· Способы отслеживания «аварийных» ситуаций.
· Обработка исключений: встроенные средства С++ для обработки исключений - операторы try,catch, throw. Непредусмотренные исключения.
· Стандартные типа исключения.
· Спецификация исключений при объявлении функций.
3. Обобщенное программирование
· Шаблоны. Объявление шаблона.
· Инстанцирование шаблона.
Обобщенное программирование. Обобщенные алгоритмы.
· Шаблоны функций.
· Способы обобщения функций, выполняющих одинаковые действия, но оперирующих данными разных типов. Создание функции по заданному шаблону и ее вызов.
· Шаблоны классов. Ключевое слово typename.
· Стандартная библиотека шаблонов.
· Контейнеры, алгоритмы и итераторы. Виды контейнеров STL.
· Структура стандартного контейнера. Обзор членов стандартного шаблона. Что же такое итераторы? Распределители памяти - шаблон allocator.
· Краткий обзор стандартных контейнеров. Вектор (vector). Список (list).
· Очереди с двумя концами - deque.
· Почти контейнеры: встроенные массивы, string, valarray, bitset.
4. Обобщенные алгоритмы стандартной библиотеки
· Рассмотрение наиболее часто используемых обобщенных алгоритмов.
· Алгоритмы, модифицирующие и немодифицирующие последовательности. Предикаты.
· Использование объектов – функций в качестве предикатов.
· Базовые классы STL для объектов-функций. Когда следует использовать шаблоны.
5. Потоки ввода/вывода
· Система ввода-вывода С++. Поток С++ с точки зрения системы. Поток С++ с точки зрения прикладной программы.
· Классы ввода/вывода. Стандартные объекты cin и cout. Буферизованный ввод/вывод.
· Состояние потока.
· Форматированный ввод/вывод. Флаги ввода/вывода и методы для работы с ними.
· Манипуляторы ввода/вывода. Файловый ввод/вывод.
· Неформатированный ввод/вывод.
6. Практика 1 - RTTI
· Реализация двухсвязного разнородного объектно-ориентированного списка.
· Оператор typeid и класс type_info. Оператор dynamic_cast.
7. Практика 2 - Исключения. Разработка собственных шаблонов
· Операторы try, catch, throw.
· Шаблоны функций.
· Шаблоны классов.
8. Практика 3 - Шаблоны стандартной библиотеки. Итераторы
· Шаблон vector.
· Шаблон list.
· Итераторы.
9. Обобщенные алгоритмы
· Алгоритмы стандартной библиотеки.
· Предикаты.
1. Механизм RTTI (Run-Time Type Identification)
· Оператор static_cast и указатели.
· Динамическая идентификация типа. Подключение RTTI.
· Оператор typeid и класс type_info.
· Оператор dynamic_cast.
2. Исключения
· Что такое исключительные ситуации.
· Способы отслеживания «аварийных» ситуаций.
· Обработка исключений: встроенные средства С++ для обработки исключений - операторы try,catch, throw. Непредусмотренные исключения.
· Стандартные типа исключения.
· Спецификация исключений при объявлении функций.
3. Обобщенное программирование
· Шаблоны. Объявление шаблона.
· Инстанцирование шаблона.
Обобщенное программирование. Обобщенные алгоритмы.
· Шаблоны функций.
· Способы обобщения функций, выполняющих одинаковые действия, но оперирующих данными разных типов. Создание функции по заданному шаблону и ее вызов.
· Шаблоны классов. Ключевое слово typename.
· Стандартная библиотека шаблонов.
· Контейнеры, алгоритмы и итераторы. Виды контейнеров STL.
· Структура стандартного контейнера. Обзор членов стандартного шаблона. Что же такое итераторы? Распределители памяти - шаблон allocator.
· Краткий обзор стандартных контейнеров. Вектор (vector). Список (list).
· Очереди с двумя концами - deque.
· Почти контейнеры: встроенные массивы, string, valarray, bitset.
4. Обобщенные алгоритмы стандартной библиотеки
· Рассмотрение наиболее часто используемых обобщенных алгоритмов.
· Алгоритмы, модифицирующие и немодифицирующие последовательности. Предикаты.
· Использование объектов – функций в качестве предикатов.
· Базовые классы STL для объектов-функций. Когда следует использовать шаблоны.
5. Потоки ввода/вывода
· Система ввода-вывода С++. Поток С++ с точки зрения системы. Поток С++ с точки зрения прикладной программы.
· Классы ввода/вывода. Стандартные объекты cin и cout. Буферизованный ввод/вывод.
· Состояние потока.
· Форматированный ввод/вывод. Флаги ввода/вывода и методы для работы с ними.
· Манипуляторы ввода/вывода. Файловый ввод/вывод.
· Неформатированный ввод/вывод.
6. Практика 1 - RTTI
· Реализация двухсвязного разнородного объектно-ориентированного списка.
· Оператор typeid и класс type_info. Оператор dynamic_cast.
7. Практика 2 - Исключения. Разработка собственных шаблонов
· Операторы try, catch, throw.
· Шаблоны функций.
· Шаблоны классов.
8. Практика 3 - Шаблоны стандартной библиотеки. Итераторы
· Шаблон vector.
· Шаблон list.
· Итераторы.
9. Обобщенные алгоритмы
· Алгоритмы стандартной библиотеки.
· Предикаты.