Стоимость курса: 5 000 грн в месяц Длительность курса: 3 месяца, 67 астрономических часов Дата начала курса:уточняйте дату у менеджеров Требования к слушателям: знание тем, изучаемых на курсе «Основы программирования на C++»
*Курс доступен на языках: русский, украинский, английский
Как при добавлении новых полей в структуру (или при наследовании от нее) добавить возможность сортировки этих структур по этим новым полям без перекомпиляции алгоритма сортировки. (то есть, как не создавать себе в будущем лишнюю работу). Предикативные функции.
Как использовать уже имеющийся чужой алгоритм (интерфейс) для обработки своих типов данных.
Шаблонные функции
Правила определения параметров типов, возможность приведения типа, перегрузка.
Функции с неопределенным количеством параметров
Зачем нужен первый параметр, работа с разнотипными параметрами.
Классы
Правило инициализации членов класса, функциональности по умолчанию и их запрет, конструкторы, деструкторы, ресурсы и принцип работы с ними, как объект может идентифицировать себя среди других - this. public, private, наличие в классе объектов другого класса или указателей, время жизни взаимодействующих объектов, композиция - осведомленность и агрегирование.
Друзья класса
Как функции или классу стать другом другого класса.
Взаимоотношения между классами-друзьями, предварительное объявление.
Как избежать перекрестных ссылок и неоднократного объявления типов, директивы #ifndef, #pragma.
Конструктор копирования
Всегда ли он нужен, мелкое и глубокое копирование, как копировать объект внутри которого есть объект другого класса.
Правила перегрузки. Использование в шаблонах. Диагностика.
Константность в классах, const_cast, mutable
Что такое настоящая константа и readonly field. volatile (потоки и оптимизация компилятора).
Нужно ли менять константу и как работать с константными объектами.
Статические члены класса, private конструктор, паттерн Singleton
Как запретить создание объекта на стеке, подсчет объектов данного класса, что делать если объект какого-то класса в программе должен быть только один.
Наследование
Отличие между расширением функционала и наследованием интерфейса.
Как инициализируется объект наследника.
Работа из под указателя на базовый класс. protected члены класса и private, protected наследование.
Полиморфизм
Виртуальные функции, деструктор, абстрактный базовый класс, интерфейс, vptr, vtbl, раннее и позднее связывание, механика вызова виртуальной функции. dynamic_cast, typeid, RTTI. В каких случаях виртуальный деструктор не спасет.
Что такое ABI (Application Binary Interface). Выравнивание данных (alignment).
Паттерны проектирования
Реализация и использование паттернов: Bridge, Abstract Factory, Visitor, Observer, Decorator, Chain Of Responsibility, MVC, Singleton, Adapter, Builder.
Шаблонные классы
hpp файлы, конструктора копирования на основе других параметров типа.
Специализация шаблонов.
Динамические структуры данных
Связные списки, деревья, очереди, стек, написание своего класса Tree.
STL
Создание своего класса List, поддерживающего интерфейс STL(итераторы, операторы, функции-члены).
Контейнеры: std::vector, list, deque, map, set. Работа с итераторами при изменении размера вектора. std::vector с указателями на объекты. hash, сравнение алгоритмов (Big O Notation).
Алгоритмы: find, copy, find_if, remove, equal_to, bind2nd и т.д.
Пространства имен.
BOOST
Знакомство с BOOST (как его скомпилировать и настроить проект), boost::bind, вся библиотека smart_ptr.
Переброс исключений, catch(...), catch(BaseЕхсeptionClass &), правила размотки стека, время жизни выбрасываемого объекта исключения.
Умные указатели
std:: и boost:: shared_ptr, weak_ptr, make_shared, auto_ptr, std::unique_ptr.
С++ 11
Знакомство с IDE QtCreator. лямбды, ссылка на rvalue и movable конструктор (а также копирование, присваивание), auto, noexcept, std::thread, std::lock_guad, std::move()
Множественное наследование
Виртуальное наследование, различия между компиляторами.
Oсновы СОМ: IUnknown, правила приведения типа в QueryInterface, регистрация компонента regsvr32, CLSID.
Интерфейс и классы-адаптеры.
Динамические и статические библиотеки (Windows/Linux)
Правила написания кроссплатформенного приложения GUI - оконные приложения на примере Win32 API и Qt
Вечный цикл, сообщения, оконная процедура, Send-PostMessage и их отличия.
Работа с элементами управления: BUTTONs (radio, check, groupbox), СOMBOBOX, EDIT и т.д. Что такое события и слоты (в частности в Qt) замена оконной процедуры, перемещение точки начала прорисовки, создание своего элемента управления, OWNERDRAW.
Процессы, потоки (Windows/Linux/С++11)
Адресное пространство, синхронизация на примере Win32, std:: и BOOST.
Cписок процессов, мьютексы, семафоры, события, ожидаемые таймеры, обмен данными между процессами,boost::thread, (сравнение с std::thread), TLS, condition_variable, lock_quard, unique_lock.
Создание сетевого приложения (Windows/Linux)
Cокеты, протоколы (TCP, UDP), блокирующие и неблокирующие режимы.
Создание плагина, позволяющего добавить новую функциональность в уже имеющуюся программу.
Программа поддерживает кроссплатформенность на уровне исходников - вся работа с ресурсами («железом») выделена в отдельные заменяемые блоки, специфичными для конкретной платформы.
Записаться
Пожалуйста, заполните форму. Наши менеджеры свяжутся с вами в ближайшее время.