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

Материал из Викиконспекты
Перейти к: навигация, поиск
(Наследование.)
Строка 41: Строка 41:
 
===Range. ===
 
===Range. ===
 
===Концепторы, функторы.===
 
===Концепторы, функторы.===
 +
==2 часть==

Версия 22:25, 8 января 2014

Эта статья находится в разработке!

Содержание

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 часть