C++(3 семестр)

Материал из Викиконспекты
Перейти к: навигация, поиск
Эта статья находится в разработке!

Содержание

1 часть[править]

Наследование.[править]

Виртуальные функции, абстрактные функции.[править]

Таблица виртуальных функций.[править]

Виртуальный деструктор.[править]

Множественное наследование.[править]

Модификаторы доступа для наследования.[править]

Виртуальное наследование.[править]

Порядок инициализации при создании объекта.[править]

Pure virtual function call, __declspec(novtable).[править]

Ковариантность типа возвращаемого значения.[править]

Приведение типов: static_cast, dynamic_cast, const_cast, reinterpret_cast;[править]

RunTime Type Information.[править]

Templates: функции и классы.[править]

Полная (explicit) и частичная (partial) специализация.[править]

Compile-time объекты.[править]

Разница между специализацией и перегрузкой функции.[править]

Template arguments deduction, partial ordering для специализаций.[править]

Правила инстанциирования.[править]

Двухфазный lookup имен: по не зависящим от параметров (independent) и зависимым (dependent) именам.[править]

Ключевое слово typename при обращении к dependent именам.[править]

Отложенный парсинг шаблонных функций компилятором Microsoft (Сорокин обещал давать на экзамене задание на эту тему).[править]

Два подхода к инстанциированию: Cfront – инстанциирование по ошибкам линковки (перелинковка, export template), Borland – инстанциирование везде, но с пометкой inline. Явное инстанциирование, подавление истанциирования.[править]

SFINAE (substitution failure is not an error).[править]

Overload resolution, conversion sequence.[править]

Tag dispatching.[править]

Namespace.[править]

Global namespace.[править]

Директива using namespace.[править]

Порядок поиска в пространствах имен.[править]

Using декларация.[править]

Анонимный namespace.[править]

Argument-dependent lookup (Koenig lookup).[править]

STL. Контейнеры, итераторы, алгоритмы.[править]

Контейнеры: sequence, associative.[править]

Итераторы: input, output, forward, bidirectional, random access.[править]

Reverse итераторы.[править]

Range.[править]

Концепторы, функторы.[править]

2 часть[править]

Дерево развития С++[править]

RAII. Scoped_ptr, shared_ptr, make_shared<T>, unique_ptr, make_unique<T>, linked_ptr. Inode.[править]

Реальный код, генерируемый компилятором. Return value optimizations. Move, rvalue ссылки. Perfect forwarding. Reference collapsing rule.[править]

Анонимные функции (lambda).[править]

Type erasure. Any, any_cast: с использованием dynamic_cast, с использованием static поля.[править]

Механизм сигналов и слотов на примере Boost. Понятие reentrancy.[править]

SSE оптимизации, strict aliasing rule, restrict.[править]

Обработка ошибок, исключения в деструкторе.[править]

Кодировки семейства Unicode. Графема, глиф. Code point, combining character. Code unit. UTF-8, overlong sequence. UTF-16, surrogate pair.[править]

Системы сборки. Make, make-files. Особенности make. Генераторы make-файлов. Cmake.[править]

Нововведения С++11: auto, decltype, anonymous functions, static_assert, range_based for, non-static members initialization, delegating constructors, inherited constructors, variatic templates, extern template, raw string literals, template aliases, constexpr.[править]

Нововведения С++14: template anonymous functions, ослабление условий на constexpr, расширение STL, tuple.[править]