|
|
(не показано 6 промежуточных версий 2 участников) |
Строка 2: |
Строка 2: |
| ==1 часть== | | ==1 часть== |
| ===Наследование.=== | | ===Наследование.=== |
− | [http://programmersclub.ru/26/]
| |
| | | |
| ===Виртуальные функции, абстрактные функции.=== | | ===Виртуальные функции, абстрактные функции.=== |
Строка 41: |
Строка 40: |
| ===Range. === | | ===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.=== |
Текущая версия на 19:31, 4 сентября 2022
Эта статья находится в разработке!
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.