Перейти к основному содержимому

О разделе

Раздел про C++ как язык системного и прикладного программирования — от первой программы до сборки, памяти, потоков и экосистемы библиотек.

Стандарт в примерах

Большинство фрагментов кода рассчитаны на C++17, если в тексте не указано иное. В вводных и системных главах сложные идеи (сборка, память, RAII) по возможности сначала даются псевдокодом

— на C++. Возможности C++20 и C++23 помечаются явно. Для новых проектов в вводной статье рекомендуется C++20; в корпоративных и embedded-проектах часто фиксируют минимум C++17 в CI.

Сначала: Что такое код и как он работает — общая база — код, блок кода, компиляция и интерпретация, исходный, байт- и машинный код; в этом разделе — синтаксис и особенности языка.

Потоки и память в C++

Теория — процессы и потоки, стек и куча.

Практика — многопоточность в 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, делегирование
3this, static, friend, вложенные классыдетали объявления класса
4struct и unionагрегаты, std::string
5Функции и friendinline, специальные функции-члены
6Исключения · иерархияtry/catch, раскрутка стека
7RTTItypeid, dynamic_cast
8Память и RAII · идиомывладение, rule of five
9Паттерны GoFпроектирование поверх синтаксиса

Зачем этот раздел

Подборка по C++ в энциклопедии: синтаксис, первая программа и смежные темы. Выберите один язык для старта, пройдите маршрут до первой рабочей программы — затем переходите к следующему языку или стеку.


С чего начать

Краткий путь для тех, кто хочет сразу писать код (маршрут — в таблице выше):

ШагМатериалЗачем
1Что знать перед C++ · Первая программафундамент и запуск
2Типы · Операторы · Управление потокомсинтаксис языка
3Функции · Память · Идиомывладение, RAII, стиль
4CMake · Заданиясборка и закрепление
5Qt Widgets · Qt QuickGUI — после базы

Дополнительные материалы по алгоритмам

STL (Standard Template Library, стандартная библиотека шаблонов C++) закрывает большинство задач на олимпиаде и в приложении — см. Справочник и Работа с данными. Репозиторий TheAlgorithms помогает увидеть, как устроены merge sort, двоичное дерево поиска (BST), trie и другие структуры в коде, и сопоставить это с разделом "Структуры данных".


Частые ошибки при старте

ОшибкаЧто делать
Прыжки между языкамиЗакройте одну "первую программу", потом сравнивайте
Код без запускаВыполните пример локально
Сразу большой фреймворкСначала база раздела, потом REST/UI

Что попробовать

  1. Шаг 1 из таблицы.
  2. Три непонятных термина — найдите статьи в оглавлении раздела.
  3. Другой язык — только после своей рабочей первой программы.


В подборках

Статья входит в тематические подборки и блок "С чего начать?" на главной. Соседние шаги того же маршрута:

Системное программированиеСистемное программирование на C++, Rust — о разделе, Оптимизация размера и производительности приложений, Ассемблер — о разделе, Выполнение кода — о разделе, Си — о разделе.

Бэкенд и серверная разработкаC# — о разделе, PHP — о разделе, Платформа .NET — о разделе, Smalltalk — о разделе, Java — о разделе, Kotlin — о разделе.