2016. — 355 с.
(Выходные данные не указаны).
Содержание:
Предисловие.
Общие сведения о языках программирования.
Введение в языки программирования.
Определение языка программирования и его аспектов.
История языков программирования.
Парадигмы программирования.
Инструментальные средства.
Трансляторы.
Другие инструментальные средства.
Основные понятия архитектуры ЭВМ
Язык программирования C++
Обзор и основные понятия языка C++
Стандарт ISO/IEC 14882:2014(E).
Обзор процесса трансляции.
Лексический состав языка.
Типизация.
Обзор структуры программы.
Пример первой программы.
От теории к первой программе
Основные арифметические типы данных.
Стандартные целые типы данных.
Стандартные типы с плавающей точкой.
Стандартные преобразования арифметических типов.
Операция приведения типов static_cast.
Основные выражения с арифметическими операндами.
Арифметические операции.
Операции с логическими значениями.
Порядок вычисления операций в выражениях.
Объекты и доступ к ним.
Простые определения объектов.
Категории значений.
Чтение и запись объектов. Операция простого присваивания. Оператор-выражение.
Операции составного присваивания, инкремента и декремента.
Пример компиляции выражения.
Введение в функции.
Определения функций.
Операция вызова функции.
Введение в форматированный ввод/вывод.
Форматированный вывод.
Форматированный ввод.
Использование среды Qt Creator.
Настройка компилятора.
Структурное программирование на языке C++
Использование функций.
Ветвления.
Условный оператор if.
Условная операция ?:.
Операторы цикла.
Оператор цикла с предусловием while.
Оператор цикла с постусловием do.
Оператор цикла for.
Изменение порядка выполнения команд в машинном коде.
Операторы перехода break, continue, goto.
Оператор break в телах циклов.
Оператор continue.
Оператор goto.
Константные выражения.
Оператор switch.
Стили оформления программ.
Примеры реализации простых алгоритмов.
Алгоритмы над фиксированным числом объектов.
Алгоритмы обработки последовательностей.
Задания на структурное программирование.
От описания до единиц трансляции
Описания и определения.
Видимость идентификаторов меток.
Описания и определения объектов и функций.
Производные типы. Категория типов «функция».
Блочная область видимости и автоматическое время хранения. Рекурсия.
Аппаратный стек как реализация механизма вызова функций и автоматического времени хранения.
Область видимости пространства имён и статическое время хранения.
Поиск имён.
Инициализация.
Связанность описаний функций.
Спецификаторы класса памяти static и extern. Анонимные пространства имён.
Описания в операторах.
Псевдонимы типов.
Возможности предварительной обработки.
Включение других текстов.
Макроподстановки.
Условная компиляция.
Заголовочные файлы.
Программы из нескольких единиц трансляции.
Этапы трансляции программы на практике.
Встраиваемые функции.
Указатели и массивы
Указатели на отдельные объекты.
Категория типов «указатель».
Использование указателей с функциями.
Операция sizeof.
Простое использование массивов.
Арифметика указателей.
Описание и работа с массивами.
Инициализаторы массивов.
Массивы и функции.
Комбинирование конструкций создания производных типов.
Массивы массивов.
Указатели на функции.
Квалификаторы типов.
Квалификаторы параметров функций. const-корректность.
Расширенные константные выражения.
Нулевой указатель.
Строковые литералы.
Задания на массивы.
Динамические структуры данных
Сложность вычислений.
Оценка алгоритмической сложности.
Сортировка массива.
Двоичный поиск.
Работа с динамической памятью.
Владение.
Динамические массивы.
Обзор линейных структур данных.
Многомерные структуры данных.
Шаговый доступ.
Массивы указателей и «рваные» массивы.
Введение в классовые типы.
Имена классовых типов.
Влияние квалификаторов на структуру и её члены.
Выравнивание объектов.
Использование классовых типов с функциями.
Неполные типы.
Графовые структуры данных.
Связанные списки.
Хеш-таблицы.
Деревья.
Сравнение динамических структур данных.
Комбинирование структур данных.
Основы объектно-ориентированного программирования на языке C++
Аргументы по умолчанию.
Последовательность стандартных преобразований.
Приведения типов.
Перегрузка функций.
Временные объекты.
Ссылки.
Ссылки на объекты.
Ссылки на функции.
Ссылки и перегрузка функций.
Классовые типы.
Функции-члены классовых типов.
Статические члены классов.
Вложенные и локальные классы.
Контроль доступа к членам классов.
Инициализация классов.
Специальные функции-члены.
Конструктор по умолчанию.
Автоматическое освобождение ресурсов.
Копирование и перемещение объектов классовых типов.
Размещение описаний классов.
Пользовательские преобразования типов.
Перегрузка операций.
Аргументо-зависимый поиск имён.
Друзья классов.
Обобщённое программирование на языке C++
Шаблоны.
Концепции.
Шаблоны функций и разрешение перегрузок.
Шаблоны классов.
Неявная и явная инстанциация шаблонов. Шаблоны и заголовочные файлы.
Явная специализация шаблонов.
Частичная специализация шаблонов классов.
Поиск имён в шаблонах.
Простые применения шаблонов.
Списки инициализации в роли аргументов.
Прозрачная передача аргументов. std::forward. Вариадические шаблоны.
std::move. Метафункции. Шаблоны псевдонимов типов.
std::exchange.
Автоматический вывод типов в языке C++. Заполнители. Хвостовой возвращаемый тип функции.
Стандартная библиотека шаблонов.
Простые концепции. Не типовые параметры шаблонов.
Итераторы.
Черты.
Контейнеры.
Последовательности.
Строки.
Цикл for для диапазона.
Функциональные объекты. Лямбда-выражения.
Алгоритмы.
Ассоциативные контейнеры.
Архитектура приложений на C++
Наследование классов.
Основы наследования.
Контроль доступа при наследовании классов.
Специальные члены класса и наследование.
Цепочки наследования.
Виртуальные функции.
Чисто виртуальные функции и абстрактные классы.
Потоки ввода-вывода.
Список операций языка C++
Литература
История версий