C++(3 семестр) — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м (rollbackEdits.php mass rollback)
 
Строка 1: Строка 1:
{| class="wikitable" align="center" style="color: red; background-color: black; font-size: 56px; width: 800px;"
 
|+
 
|-align="center"
 
|'''НЕТ ВОЙНЕ'''
 
|-style="font-size: 16px;"
 
|
 
24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.
 
 
Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.
 
 
Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.
 
 
Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.
 
 
''Антивоенный комитет России''
 
|-style="font-size: 16px;"
 
|Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.
 
|-style="font-size: 16px;"
 
|[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].
 
|}
 
 
 
{{в разработке}}
 
{{в разработке}}
 
==1 часть==
 
==1 часть==

Текущая версия на 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.