Современный курс по C++
Этот учебник призван предоставить опытным разработчикам краткую справку по новым функциям C++11/14/17/20. Охватывает улучшения удобства использования языка, повышение производительности во время выполнения, новые контейнеры, умные указатели и управление памятью, регулярные выражения, параллельное программирование и обзор C++20.
Обзор курса
Краткое содержание
Этот учебник предназначен для опытных разработчиков и служит краткой справкой по новым возможностям языка C++11/14/17/20. В материале рассматриваются улучшения удобства использования языка, повышение производительности во время выполнения, использование новых контейнеров, умные указатели и управление памятью, регулярные выражения, параллельное программирование, а также обзор языковых возможностей C++20.
Быстро освойте возможности C++11/14/17/20 и пройдите порог современного программирования на языке С++.
Автор: Оу Чанькун (Ou Changkun)
Благодарности: Лицензировано по лицензии CC BY-NC-ND 4.0, благодарность всем участникам проекта на GitHub и связанным сообществам.
Цели обучения
- Определить и проверить среду компиляции C++ и целевую архитектуру с помощью командной строки.
- Объяснить совместимость стандартов и исторические пересечения между языками С (C89, C99, C11) и С++ (С++98, С++1x).
- Реализовать функциональную межязыковую связь с использованием заголовочных файлов
extern "C"и многоэтапных процессов компиляции. - Устранить неоднозначность указателей с помощью
nullptrи реализовать логику на этапе компиляции с помощьюconstexprиif constexpr. - Упростить сложные объявления с помощью
auto,decltypeи псевдонимов типов (using), одновременно обеспечив надёжный объектно-ориентированный дизайн с помощьюoverrideиfinal. - Разработать высоконагрузочные универсальные алгоритмы с помощью переменных шаблонов, выражений свёртки и вывода параметров шаблонов без типа.
- Определить и реализовать выражения-ламбды с различными режимами захвата (по значению, по ссылке, по выражению, по общему виду).
- Использовать
std::functionиstd::bindдля создания гибких обёрток функций и частичного применения функций. - Классифицировать выражения как л-значения (Lvalues), промежуточные значения (Prvalues) и временные значения (Xvalues), применяя семантику перемещения для оптимизации управления ресурсами классов.
- Отличать модели памяти и области применения
std::array(фиксированный размер, стек) иstd::vector(динамический размер, куча).