Уровень сложности:
Длительность курса: 40 ак.ч.
График обучения: 5 дней по 8 ак.ч.
Аннотация
Стандарт С++11 - это первое значительное изменение стандарта языка С++ с 1998-го года. Многие полезные нововведения были позаимствованы из популярной в среде программистов на С++ библиотеки Boost и согласно новому стандарту стали «родными» в реализации С++, то есть поддерживаются как компилятором, так и стандартной библиотекой. В результате – перед нами практически новый язык программирования, возможностями которого пока еще мало кто пользуется, а некоторые программисты даже не в курсе тех новшеств, которые появились в языке С++. Целью данного курса является освоение новых концепций и программных средств, добавленных в язык программирования С++ согласно стандарту С++11. Также в курсе рассматриваются изменения, включенные в стандарт С++11 в 2014 году.
Знания и умения, полученные в результате обучения
После окончания обучения программист сможет:
- повысить эффективность работы программы за счет использования семантики перемещения (move semantics)
- уменьшать количество дублируемого кода посредством семантики продвижения (forwarding)
- увеличивать гибкость программ за счет использования шаблонов с переменным числом параметров (variadic templates)
- использовать для поддержки локальных действий лямбда функции;
- распараллеливать задачи посредством новой многопоточной составляющей стандартной библиотеки
- а также использовать другие удобные и полезные новшества, появившиеся в С++
Курс пока не поставлен в расписание.
|
20 000 ₽
Расчёт стоимости с учётом возможных скидок
24 400 ₽
Скидки предоставляются в зависимости от количества слушателей,
суммы договора и других условий, оговариваемых с Заказчиком.
Расчёт стоимости с учётом возможных скидок представлен как справочная информация.
Фактический размер скидки может несколько отличаться из-за округления значения суммы.
Начальные требования
- Уверенное манипулирование классами
- Владение приемами обобщенного программирования (templates)
Знания оцениваются по результатам выполнения тестового задания.
Вступительное тестирование
Тест № ВПТ-227 DEV-C22. Стандарт С++11 для прикладного программирования
Уверенное манипулирование классами, владение приемами обобщенного программирования (templates)
Тематический план
Тема 1. Обзор новых возможностей ядра языка С++ согласно стандарту С++11
- Новые типы данных (longlong, нулевой указатель – nullptr, пользовательские литералы)
- Проверка времени компиляции (static_assert)
- Универсальные cписки инициализации
- Циклы по коллекциям
- Вывод типа посредством типа инициализирующего значения или выражения (auto и decltype)
- Обобщенные константные выражения (constexpr)
- Предотвращение генерации исключений (noexcept)
Тема 2. Изменения в объявлениях методов классов
- Явное указание компилятору генерации методов класса по умолчанию (default)
- Явная перегрузка виртуальных методов (override, final)
- Явный запрет вызова метода (delete).
- Наследуемые конструкторы (inherited constructors), делегирующие конструкторы
- Инициализация членов классов при объявлении
Тема 3. Новые классы STL поддержки указателей
- Шаблон класса unique_ptr
- Шаблон класса shared_ptr
- Шаблон класса weak_ptr
Тема 4. Правосторонние ссылки (rvalue reference). Семантика перемещения (move semantics)
- Правосторонние ссылки (rvalue reference)
- Цель введения семантики перемещения
- Move конструкторы копирования, move операторы присваивания
- Семантика перемещения и внедрение
- Семантика перемещения и наследование
Тема 5. Семантика продвижения типов (forwarding)
- Цели введения продвижения типа
- forward при наследовании
- forward при внедрении
Тема 6. Синонимы шаблонов и ключевое слово using
- Понятие псевдонима типа typedef
- typedef и using применительно к шаблонам
Тема 7. Внешние шаблоны (extern templates)
- Инстанцирование обычных шаблонов
- Внешние шаблоны
Тема 8. Шаблоны с переменным числом параметров (variadic templates)
- Шаблоны функций с переменным числом параметров
- Шаблоны классов с переменным числом параметров
- Шаблон tuple
Тема 9. Лямбда функции
- Реализация лямбда функции
- Синтаксис лямбда функции
- Специфика лямбда функции
- Рекурсия и лямбда функции
Тема 10. Работа со временем
- Средства измерения времени (system_clock, monotonic_clock, high_resolution_clock)
- Хранение временных интервалов (duration)
Тема 11. Распараллеливание задач
- Средства параллельного выполнения задач (thread)
- Способы параллельного выполнения задач
- Способы синхронизации
- Синхронизирующие объекты (mutex, timed_mutex, recursive_mutex, recursive_timed_mutex, shared_timed_mutex)
- Алгоритмы STL и параллельное выполнение
Тема 12. Локальная память потока (TLS)
- Проблемы обмена данными между потоками
- Обеспечение сохранности индивидуальных данных потока