Участник:Yulya3102/Плюсы2сем — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Новая страница: «=== i8086 === === регистры общего назначения, сегментные регистры, регистр флагов === === некоторы...»)
(нет различий)

Версия 12:24, 18 января 2013

Содержание

i8086

регистры общего назначения, сегментные регистры, регистр флагов

некоторые распространенные команды

команды для работы со стеком

соглашения вызова функций

32-битные регистры

stack frame

ошибки: возврат указателя на локальную переменную из функции, buffer-overrun для объектов в стеке

stack-smash protector

toolchain: препроцессор, транслятор, компоновщик

модификатор static

модификатор inline

one definition rule (ODR)

классы

конструкторы

деструкторы

const

ссылки

разница между ссылками и указателями

l-value, r-value

перегрузка операторов

оператор присваивания

разница между конструктором копирования и оператором присваивания

список инициализации

порядок инициализации/разрушения полей класса

volatile

директивы препроцессора

#include <>

#include ""

#define

#if

#else

#endif

#elif

#ifdef

#ifndef

#undef

include guards

#pragma once

#pragma once vs include guards

preprocessor pitfalls

циклический экспанд макросов

циклические зависимости на хедерах

неполные типы

name mangling

перегрузка функций

исключения

RAII

гарантии безопасности исключений

extern "C"

исключения в конструкторах

исключения в деструкторах

stack unwinding

возврат объектов из функции по значению, RVO

передача аргументов по значению, r-value/l-value

callback'и, способы фиксации аргументов у callback'ов

наследование, виртуальные функции, таблицы виртуальных функций

dynamic_cast

проблемы сишного typecast'а с неполными типами и несколькими базами, static_cast

const_cast, reinterpret_cast

зачем нужно виртуальное наследование (несколько баз с разными адресами у одного класса, typecast'ы, исключения)

виртуальное наследование

зачем нужны namespace'ы

namespace'ы, using declaration, using directive, namespace aliases

перегрузка операторов, ADL

зачем нужны шаблоны

базовое представление о шаблонах

два способа реализации шаблонов: Cfront-like, Borland-like, преимущества и недостатки обоих

специализация, частичная специализация

type_traits'ы

Контейнеры STL

Sequences: vector, list, deque

Associative Containers: [unordered][_multi]{set/map}

Итераторы, категории итераторов (Input, Output, Forward, Bidirectional, Random Access)

Примеры алгоритмов

find, find_if, search

remove, remove_if, прием с erase/remove_if

sort, stable_sort, partial_sort, nth_element

Много разговоров на тему того, что хоть явных ограничений на параметры шаблона нет, это не означает что их нет совсем.

копируемость/присваиваемость

требования к operator==

требования к operator<

согласованность operator== и operator<

разница между операторами внутри класса и снаружи (неявное приведение типов)

safe-bool

использование type_traits: SFINAE, tag-dispatching на примере STL

two-phase name lookup

STL: back-inserter, lower_bound, heap_*, priority_queue

const на примере STL

Concepts

anonymous namespaces