C++(3 семестр) — различия между версиями
(Новая страница: «{{в разработке}}») |
м (rollbackEdits.php mass rollback) |
||
(не показано 8 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
{{в разработке}} | {{в разработке}} | ||
+ | ==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.=== |
Текущая версия на 19:31, 4 сентября 2022
Эта статья находится в разработке!
Содержание
- 1 1 часть
- 1.1 Наследование.
- 1.2 Виртуальные функции, абстрактные функции.
- 1.3 Таблица виртуальных функций.
- 1.4 Виртуальный деструктор.
- 1.5 Множественное наследование.
- 1.6 Модификаторы доступа для наследования.
- 1.7 Виртуальное наследование.
- 1.8 Порядок инициализации при создании объекта.
- 1.9 Pure virtual function call, __declspec(novtable).
- 1.10 Ковариантность типа возвращаемого значения.
- 1.11 Приведение типов: static_cast, dynamic_cast, const_cast, reinterpret_cast;
- 1.12 RunTime Type Information.
- 1.13 Templates: функции и классы.
- 1.14 Полная (explicit) и частичная (partial) специализация.
- 1.15 Compile-time объекты.
- 1.16 Разница между специализацией и перегрузкой функции.
- 1.17 Template arguments deduction, partial ordering для специализаций.
- 1.18 Правила инстанциирования.
- 1.19 Двухфазный lookup имен: по не зависящим от параметров (independent) и зависимым (dependent) именам.
- 1.20 Ключевое слово typename при обращении к dependent именам.
- 1.21 Отложенный парсинг шаблонных функций компилятором Microsoft (Сорокин обещал давать на экзамене задание на эту тему).
- 1.22 Два подхода к инстанциированию: Cfront – инстанциирование по ошибкам линковки (перелинковка, export template), Borland – инстанциирование везде, но с пометкой inline. Явное инстанциирование, подавление истанциирования.
- 1.23 SFINAE (substitution failure is not an error).
- 1.24 Overload resolution, conversion sequence.
- 1.25 Tag dispatching.
- 1.26 Namespace.
- 1.27 Global namespace.
- 1.28 Директива using namespace.
- 1.29 Порядок поиска в пространствах имен.
- 1.30 Using декларация.
- 1.31 Анонимный namespace.
- 1.32 Argument-dependent lookup (Koenig lookup).
- 1.33 STL. Контейнеры, итераторы, алгоритмы.
- 1.34 Контейнеры: sequence, associative.
- 1.35 Итераторы: input, output, forward, bidirectional, random access.
- 1.36 Reverse итераторы.
- 1.37 Range.
- 1.38 Концепторы, функторы.
- 2 2 часть
- 2.1 Дерево развития С++
- 2.2 RAII. Scoped_ptr, shared_ptr, make_shared<T>, unique_ptr, make_unique<T>, linked_ptr. Inode.
- 2.3 Реальный код, генерируемый компилятором. Return value optimizations. Move, rvalue ссылки. Perfect forwarding. Reference collapsing rule.
- 2.4 Анонимные функции (lambda).
- 2.5 Type erasure. Any, any_cast: с использованием dynamic_cast, с использованием static поля.
- 2.6 Механизм сигналов и слотов на примере Boost. Понятие reentrancy.
- 2.7 SSE оптимизации, strict aliasing rule, restrict.
- 2.8 Обработка ошибок, исключения в деструкторе.
- 2.9 Кодировки семейства Unicode. Графема, глиф. Code point, combining character. Code unit. UTF-8, overlong sequence. UTF-16, surrogate pair.
- 2.10 Системы сборки. Make, make-files. Особенности make. Генераторы make-файлов. Cmake.
- 2.11 Нововведения С++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.
- 2.12 Нововведения С++14: template anonymous functions, ослабление условий на constexpr, расширение STL, tuple.