Эта статья находится в разработке!
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.
Концепторы, функторы.