Общая
Вивчення C/C++
- Огляд C++:
- - Парадигми та ідеологія С++;
- - Поняття про роздільну компіляцію;
- - Препроцесор, компілятор, лінкер.
- Синтаксичні примітиви мови:
- - Система типів С++. Фундаментальні типи даних;
- - Оголошення та визначення, області видимості;
- - Структура оголошень сутностей програми;
- - Літерали;
- - Змінні та констант, їх ініціалізація;
- - Lvalue, rvalue;
- - Перерахування (enum);
- - Огляд оголошення функцій, структур, об’єднань, класів;
- - Принцип роботи інструкцій (statements);
- - Оператори С++;
- - Пріоритети та асоціативність операторів;
- - Інструкції керування потоком виконання. if, оператор вибору ?:, switch;
- - Цикли while, do-while, for, команди break та continue;
- - Goto;
- - Вказівники та масиви;
- - Типізовані вказівники та вказівники без типу,;
- - Нульовий вказівник;
- - Арифметика вказівників;
- - C-стрічки;
- - Динамічна пам’ять;
- - New та delete;
- - Успадковані засоби С для роботи з пам’яттю – malloc, calloc, realloc, free;
- - Посилання;
- - Функції. Оголошення та визначення;
- - Формальні параметри та значення, що повертаються;
- - Способи передачі аргументів – за значенням, за вказівником, за посиланням;
- - Масиви, як аргументи функцій;
- - Рекурсивні функції;
- - Статичні локальні змінні;
- - Статичні функції;
- - Inline-функції;
- - Перевантаження функцій. Правила вибору функцій для перевантаження.;
- - Заплутування імен, extern “C”;
- - Аргументи по замовчуванню;
- - Функції із змінною кількістю аргументів;
- - Вказівники на функції;
- - Int main(), доступ до аргументів командного рядка та змінних середовища;
- - Препроцесор;
- - Макроси (object-like macros);
- - Макроси з аргументами (function-like macros);
- - # та ##;
- - Умовна компіляція;
- - Стандартні та специфічні для платформи визначені наперед макроси;
- - #error, нестандартна директива #warning;
- - #pragma;
- - assert.
- Структури, об’єднання, класи, динамічне ООП:
- - Структури;
- - Об’єднання;
- - Поняття класу, поля даних та методи;
- - Конструктор, деструктор, конструктор по замовчуванню;
- - Вказівник this, константні методи;
- - Статичні дані та методи класу;
- - Інкапсуляція;
- - Друзі класу;
- - Успадкування, принцип підстановки;
- - Публічне (відкрите) успадкування, як реалізація принципу «нащадок є предком»;
- - Приватне успадкування – успадкування реалізації, з наданням іншого інтерфейсу;
- - Поліморфізм, віртуальні функції;
- - Абстрактні класи;
- - Принципи побудови ієрархії класів;
- - Паттерн проектування NVI (Non-Virtual Interface);
- - Ідіома «віртуального конструктора»;
- - Множинне успадкування, віртуальні базові класи;
- - Неявно створювані методи класу;
- - Узгодженість копіювання-створення-знищення-(переміщення для С++11);
- - Перевантаження операторів. Синтаксис і правила застосування;
- - Конструктори з одним аргументом, explicit;
- - Оператори неявного приведення типів.
- «Службові» засоби:
- - Простори імен;
- - Комбінування просторів імен;
- - Анонімні простори імен;
- - Виключення;
- - Ієрархії виключень;
- - Стандартні виключення;
- - Приведення типів;
- - Приведення типів у стилі С++;
- - Успадковане приведення типів у стилі С.
- Шаблони:
- - Шаблони функцій та класів;
- - Інстанціювання;
- - Параметри шаблонів. Параметри по замовчуванню;
- - Перевантаження функцій із врахуванням шаблонів;
- - Спеціалізація;
- - Часткова спеціалізація;
- - Взаємодія шаблонів із рештою засобів мови;
- - Успадкування за участю шаблонів;
- - Методи-шаблони;
- - Статичні методи та дані шаблонів класів;
- - Друзі шаблонів;
- - Шаблони як параметри шаблонів;
- - Типи залежні від параметрів шаблонів, typename I template-«конкретизація»;
- - Явне інстанціювання;
- - Прості приклади мета-шаблонного програмування;
- - Шаблони як засоби статичного (часу компіляції) ООП.
- Стандартна бібліотека:
- - Потоки вводу-виводу;
- - Ієрархія потоків;
- - Класи ostream/istream та відповідні наперед створені потоки: cin/cout/cerr/clog;
- - Перевантажені оператори << та >>;
- - Низькорівневі операції виводу: puts, write;
- - Низькорівневі операції вводу: get, getline, ignore, peek, putback, unget, read, readsome, gcount;
- - Форматування виводу. Прапорці форматування, маніпулятори;
- - Стан потоку, прапорці good, fail, bad, eof; їхня спільна робота, перевірка стану потоку;
- - Виключення потоків;
- - Буфери потоків;
- - Файлові потоки;
- - Відкриття файлових потоків, режими відкриття;
- - Файлові вказівники;
- - Стрічкові потоки (stringstream);
- - Std::string;
- - Засоби маніпуляції стрічками – створення, пошук, видалення, об’єднання, вставка, тощо;
- - Допоміжні засоби – numerical_limits, pair, min, max, swap, тощо;
- - STL – стандартна бібліотека шаблонів;
- - Контейнер std::vector;
- - Ітератори;
- - Класи ітераторів згідно їх потужності;
- - Інтервали;
- - Стандартні алгоритми;
- - Алгоритми, що не модифікують послідовність;
- - Алгоритми, які модифікують послідовність;
- - Об’єкти-функції, (лямбда-функції С++11);
- - Адаптери;
- - Предикати;
- -Генератори ітераторів (back_inserter і компанія);
- - Стандартні контейнери;
- - Ідіома remove-erase;
- - Послідовні контейнери: vector, deque, list;
- - Асоціативні контейнери: set, map, multiset, multimap;
- - Адаптери: queue, priority_queue, stack.
- C++11/C++14:
- - Покращення конструкцій, що вже існують;
- - Списки ініціалізації;
- - Універсальна ініціалізація;
- - Виведення типів, auto та decltype;
- - For для інтервалів (Range-based for);
- - Лямбда-функції;
- - Альтернативний синтаксис оголошення функцій;
- - Делеговані конструктори;
- - Явні перевизначення віртуальних функцій, заборона перевизначення (override і final);
- - Nullptr;
- - Типізовані перерахування;
- - Explicit для операторів перетворення типів;
- - Синоніми шаблонів (Template aliases);
- - Узагальнені об’єднання;
- - Нові можливості ядра мови;
- - Нові види стрічкових літералів – «сирі» та Unicode-літерали.;
- - Користувацькі літерали;
- - Керування методами, що генеруються автоматично --- default і delete.;
- - Керування вирівнюванням;
- - Атрибути функцій;
- - static_assert;
- - Огляд шаблонів із змінною кількістю аргументів;
- - Зміни, пов’язані із продуктивністю;
- - Rvalue-посилання, move-конструктори;
- - Constexpr;
- - Модифікація та деталізація поняття POD;
- - Extern-шаблони;
- - Нове у стандартній бібліотеці;
- - Tuple;
- - Розумні вказівники;
- - Хешовані контейнери: unordered_set, unordered_multiset, unordered_map, unordered_multimap;
- - Масив фіксованого розміру std::array та однозв’язний список std::forward_list;
- - Нові алгоритми;
- - Обгортки для функцій (function wrappers);
- - Регулярні вирази;
- - Просунуті генератори випадкових чисел;
- - Властивості типів (type traits);
- - Багатопоточність;
- - Модель пам’яті С++, з врахуванням багато поточності;
- - std::thread;
- - Мютекси та умовні змінні;
- - Атомарні операції та змінні;
- - Std::future і std::promises для більш високорівневої багатопоточності. std::async;
- - Thread-local storage.
Критерий завершения
Розуміння і використання базових понять
- 308
- 31 декабря 2020, 00:06
Не пропустите новые записи!
Подпишитесь на цель и следите за ее достижением