Продвинутый курс C++

Ты детальнее познакомишься с возможностями С++ и усовершенствуешь свои навыки разработки
Старт обучения
17 занятий
Уточняйте
в администрации
230 $
КОГДА
СКОЛЬКО
ЦЕНА
2-3 раза в неделю
с 19:00 до 22:00
Онлайн обучение

Доступно обучение offline

Что нужно, чтобы пройти курс:

Владение С++ на базовом уровне

Как проходит процесс обучения?

Вебинар
Мы ведем стрим аудиторного занятия, к которому ты подключаешься. Оффлайн и онлайн группы учатся в одном ритме, что открывает возможности нетворкинга.
Домашние задания
Ты получаешь домашнее задание по пройденной теме. Оно поможет тебе закрепить материал и получить практический опыт.
Работа с ментором
Ментор консультирует студентов по поводу выполнения домашних заданий, а также сопровождает группу во время занятий и в неурочное время.
Почему стоит выбрать онлайн-курсы ITEA
Эффективный и удобный формат
Никаких длительных переездов, пробок и опозданий — ты подключаешься к стриму офлайн-занятия из любой удобной тебе локации и устройства. Даже если ты пропустил одну из лекций - всегда сможешь просмотреть запись урока в личном кабинете.
IT-английский
В рамках наших курсов, каждый студент может посещать English Speaking Club. Этого вряд ли хватит для работы в главном офисе Google, но точно достаточно для чтения технической документации, прохождения собеседований и общения с заказчиками.
Всестороннее развитие
IT требует не только технических, но и коммуникативных навыков. Дополнительные курсы для прокачки soft skills помогут проходить собеседования, эффективно работать в команде и вырабатывать в себе необходимые качества, помимо профессиональных умений.
Стажировка и трудоустройство
Подбирая подходящий набор курсов под необходимые на рынке требования, ITEA помогает тебе найти правильный путь развития в IT. После обучения мы рекомендуем наших студентов для стажировки и трудоустройства в компании-партнеры ITEA.


Дружное сообщество
Преподаватель, ментор и одногруппники в онлайне и офлайне — это не только твои новые контакты в мессенджере, а и источник продуктивного нетворкинга и полезной информации.
Актуальные программы обучения
Мы следим за трендами и изменениями в мире IT, потому изменяем программы согласно актуальным обновлениям. Ты получаешь самые свежие знания, которые нужны будущему работодателю

Твой план обучения «от» и «до»

Конструкторы деструкторы
  • Правила генерации конструкторов до С++11
  • Что такое rvalue ссылки
  • Перемещающий конструктор и перемещающий оператор присвоения
  • Правила генерации конструкторов и операторов присваивания после С++11
  • Функция std::move. Неправильное применение функции std::move в качестве возвращаемого значения .
  • Разница между объявлением конструкторов и операторов присваивания как приватные методы и объявление их с помощью ключевого слова delete.
  • Зачем вообще нужно писать конструкторы и операторы присваивания как недоступные.
  • Важность объявления конструкторов с помощью ключевого слова default
  • Что такое delegating constructors
  • Простое понимание что такое NRVO и RVO.
  • Проблемы влияния пользовательского конструктора на неявное преобразования типов. Ключевое слово explicit.
  • Reference-qualified методы класса
Статический полиморфизм
  • Более детальное понимание перегрузки функции. Ключевое понятие mangling, и рассмотрение примера перегрузки на примере таблицы символов.
  • Шаблоны и шаблоны класса. Правила вывода типов для шаблонных параметров. Trailing return type.
  • Проблематика шаблонов. Проблемы инстанцирования. Способы явного инстанцирования.
  • Пример написания класса array, как аналог замены встроенного статического массива
Динамический полиморфизм
  • Особенности работы с динамическим полиморфизмом (virtual functions).
  • Важные нововведения начиная с С++11 для безопасной работы с динамическим полиморфизмом.
  • Ключевое слово final в контексте виртуальных функций
  • Аргумент по умолчанию и какие он скрывает проблемы в контексте виртуальных функций.
  • Структура type_info.
  • Когда именно полезен динамический полиморфизм
Более сложные применение шаблонов
  • Структура std::enable_if, зачем это может пригодиться. Элегантное замена сложности std::enable_if начиная с С++17.
  • Метапрограммирования, рассмотрения заголовочного файла <type_traits> как способа получения метаинформации о типе. И применения его на примере простого шаблона.
  • Функция std::forward
  • Шаблоны с переменным числом параметров, понятие свертки.
  • Шаблонные конструкторы.
  • Вспомогательные шаблоны std::pair, шаблон std::tuple. Какие они решают проблемы.
Написание библиотек на языке С++
  • Что такое разделяемые библиотеки.
  • Что такое статические библиотеки.
  • Разница в написании статических и динамических библиотек
  • Пример написания двух видов библиотек.
  • Написания С++ библиотеки для подключения ее в С код и С++ код
  • Возможные проблемы при написании библиотек.
  • Раздельная компиляция(многомодульность) и линковка.
Вывод типа в С++(type deduction)
  • Вывод типа с помощью ключевого слова auto, такой ли тип на самом деле?
  • Ключевое слово decltype
  • Константные ссылки, как средство пролонгации времени жизни объекта. И подводные камни.
Исключительные ситуации
  • Простое понимание исключительных ситуаций. Что такое раскрутка стека.
  • Ключевое слово noexcept. Его особенности.
  • Висячие ссылки и висячие указатели.
  • Исключительные ситуации в конструкторе и деструкторе
  • noexcept деструкторы и конструкторы.
  • Нужны ли исключительные ситуации, и что такое обработка ошибок в стиле С, нужна ли она, и какие ее преимущества в сравнении с исключительными ситуациями.
Умные указатели
  • Паттерн проектирования RAII
  • Проблемы при использовании С подхода динамического выделения памяти для объектов.
  • Что такое менеджер памяти и простое понимание выделение памяти
  • Виды умных указателей. Какую проблему они решают.
  • Зачем нужны вспомогательные функции(make_unique и т.д.). Какую проблематику они решают.
  • Всегда ли стоит применять умные указатели, возможные проблемы производительности.
  • std::static_pointer_cast, std::dynamic_pointer_cast. В чем их отличие от static_cast и dynamic_cast.
  • Стоит ли проверять созданные умные указатели на nullptr. Когда умные указатели кидают исключения, а когда возвращают nullptr
Введение в STL
  • Что такое STL.
  • Немного о структуре STL
  • Стоит ли знать всю библиотеку STL
Хочешь ознакомиться с полной программой обучения?
Оставь свой email и мы вышлем тебе полную программу обучение сегодня же!

Кто преподаватели?

Команда ITEA собрала лучших практиков: руководителей, senior-специалистов и экспертов с многолетним опытом

Солянко Николай
8+ лет в коммерческой разработке
Senior Software Engineer в Epam Systems. В прошлом — Lead Engineer в подразделении R&D Samsung. Работал со многими технологиями, платформами, фреймворками, библиотеками и языками программирования.
Дмитрий Афанасьев
3+ года в разработке программного обеспечения
Software Engineer в Luxoft и автор видеокурсов на ITVDN. Разрабатывал HMI для корпораций-гигантов европейского рынка автомобилестроения, а также Back end в проектах embedded-устройств в автомобилях. Обладает технической экспертизой C/C++ 11/14, Qt, QML, cmake/qmake, Linux, Git, GTest, SQL.
Успей забронировать свое место в группе
Если после первого занятия ты почувствуешь, что этот курс не для тебя (например, не подходит по сложности), то мы вернем деньги.

Курсы по направлению

Programming. Basic

Научитесь всему, что должен знать начинающий разработчик
Время обучения
12 занятий
Cтарт
Уточняйте в администрации
КУРС

C++ base

Знакомство с принципами программирования и особенностями C++ разработки на практических примерах
Время обучения
16 занятий
Cтарт
Уточняйте в администрации
КУРС

Отвечаем на самые часто задаваемые вопросы

Не будет ли в курсе слишком много теории? Я точно получу практические знания?
Если бы в нашем курсе было слишком много теории, то они были бы просто неинтересными и неэффективными. А разве посещал бы кто-то неинтересные и неэффективные курсы, да еще и платил бы за это деньги?! После изучения теории, ты сам пробуешь кодить, анализировать, пробовать упростить функционал существующей и написать новую программу. Практика будет повсюду следовать за тобой, как в домашних заданиях, так и в конце онлайн-занятий. И конечно же ты это делаешь под тщательным наблюдением ментора, который будет направлять твои действия в правильное русло, помогать с решением задач и с исправлением ошибок. А после прохождения курса тебя еще и ждет собственный дипломный проект, который уж точно невозможно было бы сдать, опираясь только на теорию.
    Будет ли преподаватель помогать мне с решением практических заданий: давать советы, смотреть скриншоты, объяснять то, что я не понял?
    Конечно, наши преподаватели делают так, чтобы даже самая скучная теория пробуждала твой интерес лучше кофе, а самые сложные задачи щелкались, как орешки. И если для этого нужно придумать примеры "из жизни", либо показать на пальцах, то мы это сделаем, пока ты не разберешься как следует в нужном вопросе.
    Если делаю паузу в обучении (например, из-за болезни), то я могу восстановиться? Или время (и деньги) будут потеряны?
    Понятное дело, что с температурой или сломанной рукой разработать и настроить программу будет весьма непросто. А потому у тебя будет возможность поставить прогресс на паузу и после выздоровления продолжить с той же точки, где остановился. Детали ты всегда можешь уточнить у администрации.
    Есть ли возрастные ограничения на прохождение курса?
    Наш курс нацелен на обширную возрастную группу: от 15 до 60 лет. А это значит, что отговорки по типу "я слишком молод/стар для этого" не работают. Также для детей, возрастом младше 15 лет у нас открыта специальная линейка детских курсов.
    Нужно ли иметь предварительную подготовку в рамках вашего обучения?
    Все, что тебе нужно, это базовые навыки работы с ПК и желание обучаться, остальное дело уже за нами.
    Как происходит процесс трудоустройства в ITEA после прохождения курса и получения сертификата?
    Хорошие специалисты - на вес золота. А потому лучшие студенты, набравшие максимальное количество баллов по ходу обучения, получат специальную форму резюме, после заполнения которой они будут рекомендоваться на прохождение практики. Результаты стажировки и станут основой для твоего будущего трудоустройства.
    Какой уровень английского языка необходим для трудоустройства на позицию Junior?
    Для того, чтобы занять позицию Junior, достаточно владения английским языком на уровне Intermediate.
    Поможем в выборе направления прямо сейчас