О разделе
Раздел про C++ как язык системного и прикладного программирования — от первой программы до сборки, памяти, потоков и экосистемы библиотек.
Большинство фрагментов кода рассчитаны на C++17, если в тексте не указано иное. В вводных и системных главах сложные идеи (сборка, память, RAII) по возможности сначала даются псевдокодом
— на C++. Возможности C++20 и C++23 помечаются явно. Для новых проектов в вводной статье рекомендуется C++20; в корпоративных и embedded-проектах часто фиксируют минимум C++17 в CI.
Сначала: Что такое код и как он работает — общая база — код, блок кода, компиляция и интерпретация, исходный, байт- и машинный код; в этом разделе — синтаксис и особенности языка.
Теория — процессы и потоки, стек и куча.
Практика — многопоточность в C++ (std::thread, мьютексы, атомики).
Рекомендуемый маршрут
| Этап | Статьи | Зачем |
|---|---|---|
| Подготовка | Что знать перед C++ | фундамент из разделов "Основы", "Код", "Система" |
| Старт | Язык системного программирования | зачем C++, модель компиляции, ABI |
| Углубление (обзор) | Углублённые темы | модули, EH, сравнение с Rust, HPC |
| Идиомы и C++20 | Идиомы, Диапазоны | RAII, copy-and-swap, ranges/views |
| Синтаксис | Типы, Операторы, Циклы и управление | базовый язык |
| Память и ООП | ООП в разделе "Код" (база) → ООП в C++, Память, Системное программирование | классы, владение, низкий уровень |
| Практика | Функции и лямбды, Компиляторы и toolchain, Сборка, CMake, Задания | писать, собирать, закреплять |
| Олимпиады | Шаблоны C++ в Lab, Алгоритмы — о разделе, TheAlgorithms/C-Plus-Plus | контестные шаблоны и STL; репозиторий — разбор кода алгоритмов |
| UI и графика | Qt, Qt Widgets, Qt Quick, SFML, SDL, Siv3D, Raylib, OpenGL, DirectX, Vulkan, Игры | desktop, 2D/3D, GPU |
| Продвинутое | Потоки, Сеть, Экосистема | конкурентность, I/O, фреймворки |
| Справка | Справочник, Ключевые слова | быстрый поиск по API и официальной документации |
Статья C++ - язык системного программирования — вводный обзор; продолжение в C++ — углублённые темы.
Маршрут "ООП и парадигмы" (C++)
Концепции ООП без C++: раздел ООП, начните с сложности и декомпозиции.
| Шаг | Статья | Темы |
|---|---|---|
| 1 | ООП в C++ | класс, наследование, virtual, перегрузка, шаблоны, STL |
| 2 | Композиция и наследование | has-a, is-a, делегирование |
| 3 | this, static, friend, вложенные классы | детали объявления класса |
| 4 | struct и union | агрегаты, std::string |
| 5 | Функции и friend | inline, специальные функции-члены |
| 6 | Исключения · иерархия | try/catch, раскрутка стека |
| 7 | RTTI | typeid, dynamic_cast |
| 8 | Память и RAII · идиомы | владение, rule of five |
| 9 | Паттерны GoF | проектирование поверх синтаксиса |
Зачем этот раздел
Подборка по C++ в энциклопедии: синтаксис, первая программа и смежные темы. Выберите один язык для старта, пройдите маршрут до первой рабочей программы — затем переходите к следующему языку или стеку.
С чего начать
Краткий путь для тех, кто хочет сразу писать код (маршрут — в таблице выше):
| Шаг | Материал | Зачем |
|---|---|---|
| 1 | Что знать перед C++ · Первая программа | фундамент и запуск |
| 2 | Типы · Операторы · Управление потоком | синтаксис языка |
| 3 | Функции · Память · Идиомы | владение, RAII, стиль |
| 4 | CMake · Задания | сборка и закрепление |
| 5 | Qt Widgets · Qt Quick | GUI — после базы |
Дополнительные материалы по алгоритмам
- Lab / 1125 — олимпиадные шаблоны — готовый код под контест (ввод-вывод,
vector, графы, динамическое программирование, DSU, топосорт, Fenwick, KMP) - Алгоритмы — о разделе — определения, псевдокод и оценка сложности до чтения чужого C++
- Big-O — шпаргалка — как по коду понять
O(n),O(n log n)и ловушки в Python (те же идеи применимы к C++) - TheAlgorithms/C-Plus-Plus — сотни учебных
.cppна C++17 (сортировки, графы, структуры данных), лицензия MIT - Документация TheAlgorithms — Doxygen с разбором файлов и ссылками на функции STL
STL (Standard Template Library, стандартная библиотека шаблонов C++) закрывает большинство задач на олимпиаде и в приложении — см. Справочник и Работа с данными. Репозиторий TheAlgorithms помогает увидеть, как устроены merge sort, двоичное дерево поиска (BST), trie и другие структуры в коде, и сопоставить это с разделом "Структуры данных".
Частые ошибки при старте
| Ошибка | Что делать |
|---|---|
| Прыжки между языками | Закройте одну "первую программу", потом сравнивайте |
| Код без запуска | Выполните пример локально |
| Сразу большой фреймворк | Сначала база раздела, потом REST/UI |
Что попробовать
- Шаг 1 из таблицы.
- Три непонятных термина — найдите статьи в оглавлении раздела.
- Другой язык — только после своей рабочей первой программы.
C++ - язык системного программирования
C++ как язык системного программирования - ключевые принципы, область применения и инженерные требования к коду.
Экосистема приложений на C++
Экосистема приложений на C++ - области применения языка от системного ПО до высоконагруженных вычислений.
Что требуется знать перед началом изучения языка программирования C++
C++ — это мощный язык программирования общего назначения, который обеспечивает прямой доступ к аппаратным ресурсам компьютера при сохранении высокой производительности.
Первая программа на C++
Гайд по установке и настройке с написанием первой программы и её запуском.
Начало работы с C++
Директива препроцессора include используется для подключения заголовочных файлов в исходный код. Она сообщает компилятору вставить содержимое указанного файла в текущее место перед началом компиляции.
Конфигурация и сборка в C++
Конфигурация — это набор правил и переменных, которые управляют процессом превращения исходного текста в исполняемый продукт.
Простые приложения на C++
Примеры простых и полезных консольных приложений с демонстрацией концепций языка.
CMake — первая программа
Минимальный кроссплатформенный проект C++17 с CMake — структура, сборка и разбор CMakeLists построчно.
Google Test и Catch2 в C++
Модульные тесты с GTest и Catch2 в CMake-проекте — зачем отдельный target, примеры и запуск ctest.
Практические задания по C++
Набор мини-проектов для закрепления C++ — консоль, RAII, CMake, Qt, ranges и опционально Vulkan.
Рекомендации по разработке на C++
Набор советов, правил, принципов и обычаев в разработке на этом языке.
Типы данных в C++
Типизация, набор правил определения типа данных значений языка.
Операторы и выражения в C++
Операторы и выражения в C++ - семантика операций, приоритеты и построение корректной вычислительной логики.
Циклы и управляющие конструкции в C++
Циклы и управляющие конструкции в C++ - семантика ветвлений, повторений и контроль потока на уровне языка.
Объектно-ориентированное программирование в C++
ООП в C++ - классы, инкапсуляция, наследование и полиморфизм в системном контексте языка.
Композиция и наследование в C++
Композиция, агрегация и наследование в C++. Когда связь has-a уместнее is-a, делегирование и интерфейсы.
RTTI в C++ — typeid и dynamic_cast
Идентификация типов во время выполнения, безопасное приведение в полиморфных иерархиях и когда RTTI отключают.
Класс в C++ — this, static, friend и вложенные типы
Указатель this, статические члены, дружественные классы, локальные и вложенные классы, inline-методы в теле класса.
Синтаксис и пунктуация в C++
Кавычки, точки, запятые, скобки и прочие знаки препинания.
Ключевые слова языка C++
Ключевые слова C++ - справочник основных языковых конструкций и их роли в системном и прикладном коде.
Встроенные функции и методы стандартной библиотеки
Набор функций, которые включены в стандартную библиотеку языка.
Переменные и области видимости в C++
Переменные и области видимости в C++ - время жизни, `scope`, `linkage` и влияние на архитектуру программы.
Функции и лямбда-выражения в C++
Функции и лямбда-выражения в C++ - декомпозиция логики, захваты контекста и функциональный стиль в системном коде.
Стандартные и сторонние библиотеки C++
Стандартные и сторонние библиотеки C++ - директивы подключения, организация заголовков и управление зависимостями.
Управление памятью в C++
Управление памятью в C++ - модель аллокации, владение ресурсами и современные практики безопасной работы с памятью.
Иерархия исключений в стандартной библиотеке C++
Иерархия std::exception, типы из stdexcept и особенности noexcept у деструкторов.
Обработка исключений в C++
try, catch, throw, пользовательские исключения, раскрутка стека и гарантии безопасности при исключениях.
Многопоточность и асинхронное выполнение в C++
Многопоточность и асинхронность в C++ - модели конкурентного выполнения и синхронизация параллельных задач.
Системное программирование на C++
Системное программирование на C++ - управление ресурсами ОС, низкоуровневые интерфейсы и требования к надёжности.
Разработка игр с использованием C++
Разработка игр на C++ - архитектура игровых систем, производительность движка и практические подходы.
Работа с типами данных в C++
Работа с типами в C++ - система типов, преобразования и выбор корректных представлений данных для задач.
Работа с данными
Работа с данными в C++ - структуры хранения, управление ресурсами и эффективные стратегии обработки информации.
Сетевое взаимодействие в C++
Сетевое взаимодействие в C++ - сокеты, клиент-серверная модель и базовые принципы обмена данными по сети.
Особенности и расширения языка C++
C++ поддерживает несколько парадигм программирования, что позволяет выбирать наиболее подходящий стиль в зависимости от задачи: - Процедурное программирование: организация кода в виде функций и.
Qt - кроссплатформенный фреймворк на C++
Qt на C++ - кроссплатформенный фреймворк для GUI и системных приложений с богатой экосистемой инструментов.
Qt — первая программа
Минимальное окно на Qt6 и CMake — QWidget, сигналы и слоты, разбор кода построчно.
Qt Quick — первая программа на QML
Минимальное Qt Quick приложение — QML UI, счётчик на C++, CMake и связь с логикой через Q_PROPERTY.
SFML — 2D-графика и мультимедиа на C++
SFML — кроссплатформенная библиотека для окон, 2D-рендеринга, звука и сети с нативным C++ API; установка, игровой цикл и сравнение с SDL и Raylib.
SDL — мультимедиа и окна на C++
SDL2 — кроссплатформенный C-API для окон, ввода, аудио и рендеринга; связка с C++, CMake, SDL_image/mixer и сравнение с SFML.
Siv3D — 2D/3D и мультимедиа на C++
OpenSiv3D — header-friendly фреймворк для игр и визуализации: Scene, примитивы, шрифты, аудио, CMake и сравнение с Raylib и SFML.
Raylib — быстрые 2D/3D прототипы на C++
Raylib — лёгкая C-библиотека для окон, 2D/3D, звука и ввода; использование из C++, CMake, игровой цикл и сравнение с SFML и SDL.
OpenGL — 3D-графика на C++
OpenGL 3.3 core из C++ — GLFW, GLAD/GLEW, GLM, VBO/VAO, шейдеры GLSL, текстуры и связка с SFML, SDL и Qt.
DirectX — графика и мультимедиа на Windows
DirectX 11/12 для C++ на Windows — DXGI, D3D, HLSL, шаги инициализации, связка с MSVC и сравнение с OpenGL и Vulkan.
C++ — углублённые темы
Шаблоны, модули, модель памяти, исключения, сравнение с системными языками и инструменты — продолжение обзора C++.
Vulkan и низкоуровневая графика на C++
Vulkan для C++ — объекты API, конвейер, синхронизация, CMake/GLFW и место среди SFML, SDL, Raylib, OpenGL и DirectX.
Справочник по C++
Справочник-шпаргалка по C++: типы, синтаксис, стандартная библиотека, типовые паттерны.
Идиомы современного C++
RAII, Rule of Five, copy-and-swap, move-and-swap, remove-erase и другие устойчивые приёмы — когда что применять.
Диапазоны и представления в C++20
std::ranges, ленивые views, конвейеры filter-transform и remove-erase без лишних копий — практическое руководство.
Компиляторы и toolchain C++
GCC, Clang, MSVC, Intel oneAPI и MinGW — как выбрать компилятор, стандартную библиотеку и флаги; эквиваленты команд и типичные ошибки линковки.
Легаси — C++ Builder и Win32 RAD
Embarcadero C++ Builder, VCL и RAD Studio — для кого этот стек, чем отличается от Qt/CMake и как безопасно сопровождать старые Win32-проекты.
C++ — итоги
Итоги раздела «C++» — FAQ и краткие ответы по теме.
C++ — чек-лист
Чек-лист раздела «C++» — вопросы для самопроверки.
C++ — о разделе
Раздел про C++ как язык системного и прикладного программирования: от первой программы до сборки, памяти, потоков и экосистемы библиотек.
В подборках
Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:
Системное программирование — Системное программирование на C++, Rust — о разделе, Оптимизация размера и производительности приложений, Ассемблер — о разделе, Выполнение кода — о разделе, Си — о разделе.
Бэкенд и серверная разработка — C# — о разделе, PHP — о разделе, Платформа .NET — о разделе, Smalltalk — о разделе, Java — о разделе, Kotlin — о разделе.