Развернуть
- Стандартные потоки ввода / вывода (
standard input / output streams
).
- Манипуляторы (
manipulators
).
- Файловый поток (
std::fstream
).
- Строковый поток (
std::stringstream
).
std::string
.
- Итераторы (
iterators
).
auto
& range-based for-loop
.
Развернуть
- Виртуальный деструктор (
virtual destructor
).
- Спецификатор
final
.
- Спецификатор
override
.
- Абстрактный класс (
abstract class
).
- Модификаторы доступа (
access modifiers
).
- Спецификатор
friend
.
- Отличия
struct
и class
.
- Пространство имен (
namespace
).
- Перегрузка операторов (
operators overloading
).
- Правило трех (
rule of three
).
- Спецификаторы
default
и delete
.
- Аргументы по умолчанию (
default arguments
).
Развернуть
- Список инициализации (
member initializer list
)
- Делегирующие конструкторы (
delegating constructors
).
- Порядок инициализации.
- Ссылки (
reference
).
- Композиция (
composition
).
- Наследование (
inheritance
).
- Множественное наследование (
multiple inheritance
).
- "Dreaded diamond".
- Виртуальное наследование (
virtual inheritance
).
- Виртуальные функции (
virtual functions
).
Развернуть
- Сравнение языков C & C++ на примере stack'а .
- Конструктор (
constructor
), деструктор (destructor
), методы (methods
).
- Что скрывает компилятор?
- Keyword
this
.
new
/ delete
vs malloc
/ free
.
- Реализация
new
/ delete
на С.
- Статические члены класса (
static members
).
Inline
функции.
- Перегрузка функций (
function overloading
).
- Mangling.
- Введение в наследование (
inheritance
).
- Реализация наследования на С.
Развернуть
- Motivation for templates.
- How it work? Instantiation.
- Template argument deduction from a function call.
- Class templates.
- Function templates specialization.
- Class templates specialization.
- Member templates.
- Traits classes.
- Policy classes.
- Functors from
<functional>
. std::bind
.
- Lambda-expression.
- SFINAE.
- Iterator implementation until and since C++17.
Развернуть
- Принцип разделения интерфейса (ISP).
- SOLID.
- Проектирование для задачи линейной аппроксимации набора точек.
Развернуть
- Графическая нотация для отношений.
- Пример: проектирование программы форматирования текста.
- Принцип подстановки Лискоу (LSP).
- Принцип инверсии зависимостей (DIP).
Развернуть
- Наследование.
- Композиция. Выбор между композицией и наследованием.
- Агрегация. Разница между композицией и агрегацией.
- Ассоциация.
- Пример замены композиции на ассоциацию.
- Принцип открытия-закрытия (OCP).
- Как вносить изменения, не нарушая принцип OCP? Выделение абстракции.
Развернуть
- Общие требования к классам (декомпозиция, модульная композиция, модульная понятность, модульная непрерывность, модульная защищённость).
- Простая и незамысловатая реализация программы вычисления медиан.
- Реализация с одним большим классом.
- Принцип одной зоны ответственности (Single Responsibility Principle, SRP).
- Разнесение зон ответственности через структуры данных. Функциональный подход.
- Разделение вычисления медиан на классы Parser и MediansMedian.
- Альтернативное разделение на классы: Parser, ParserClient и MediansMedian. «Активные» и «пассивные» классы.
Развернуть
- Abnormal program termination.
- Return error codes.
- Macro
errno
.
try
/catch
/throw
.
- Using objects as exceptions.
- Exception specifications.
- Unwinding stack.
- More exception features.
RAII
.
- Exceptions in constructors.
- Best practices.
Действия