Последнее обновление:2026-10-12
Обзор проекта¶
1. Общие сведения о проекте¶
- Название на китайском: C++那些事
- Название на английском: Stories About C Plus Plus or CPlusPlusThings
C++那些事 — это открытый учебный проект, ориентированный как на начинающих, так и на продвинутых разработчиков C++. Проект призван помочь учащимся пройти путь от основ C++ до продвинутого уровня: от базового синтаксиса, объектно-ориентированного программирования, шаблонного программирования и использования STL до таких продвинутых тем, как многопоточность и параллельность, управление памятью и оптимизация производительности. Кроме того, в проекте глубоко анализируется исходный код ряда классических библиотек и фреймворков с открытым исходным кодом, что помогает разработчикам лучше понять применение C++ в реальных проектах.
2. Цели проекта¶
- От новичка до продвинутого: предоставить начинающим систематизированный путь обучения, помогающий постепенно, с нуля, освоить ключевые концепции и продвинутые возможности C++.
- Подготовка к собеседованиям: предоставить соискателям разбор типичных вопросов на собеседованиях по C++ и практические упражнения, помогающие выделиться среди кандидатов.
- Анализ исходного кода: через анализ исходного кода классических открытых проектов помочь разработчикам глубже понять шаблоны проектирования и принципы реализации в C++.
- Многопоточность и параллельность: подробно исследовать многопоточное программирование и управление параллельностью в C++, помогая разработчикам писать эффективные и безопасные параллельные программы.
- Оптимизация производительности: познакомить с приёмами оптимизации производительности в C++, помогая разработчикам писать эффективный код.
3. Содержание проекта¶
Проект C++那些事 отличается богатым содержанием и охватывает все аспекты C++; он включает следующие основные модули:
-
Основы и продвинутый уровень
- Ключевые слова и возможности: подробный разбор таких ключевых слов, как
const,static,this,inline,sizeof,virtual,volatile,explicit,friend,using,::,enum,decltypeи других. - Функции и указатели: указатели на функции, чисто виртуальные функции и абстрактные классы,
vptr_vtableи т. д. - Структуры данных:
struct,union, битовые поля, различия между ссылками и указателями и т. д. - Реализация полиморфизма C++ на языке C: реализация возможностей полиморфизма C++ средствами языка C.
- Макросы и утверждения: определение и использование макросов, сценарии применения
assert.
- Ключевые слова и возможности: подробный разбор таких ключевых слов, как
-
Практическая серия
- 10 дней интенсивной практики: быстрое повышение навыков программирования на C++ благодаря десятидневным интенсивным упражнениям.
- Ключевая практическая тренировка: практические упражнения по важным и сложным темам C++ для закрепления изученного материала.
-
Анализ исходного кода STL
- Контейнеры: анализ исходного кода контейнеров
array,deque,queue,stack,list,vector,rb_tree,set,multiset,map,multimap,hashtable,unordered_mapи других. - Итераторы и характеристики:
iterator,traits,typenameи т. д. - Оптимизация EBO: техника оптимизации пустого базового класса (EBO) в дизайне STL.
- Контейнеры: анализ исходного кода контейнеров
-
Новые возможности C++2.0
- Возможности C++11: автоматическое выведение типов, лямбда-выражения, rvalue-ссылки, умные указатели и др.; см. также раздел C++11 на этом сайте.
- C++17 / C++20: раздел C++17, раздел C++20.
-
Дополнительные темы
- Глубокое погружение в механизмы языка: mutable, всё семейство const, ABI, хвостовая рекурсия и др. (см. навигацию «Основы → Глубокое погружение в механизмы языка»).
- Память и отладка, Оценка производительности, Практические проекты, Чтение и приёмы: отдельные разделы навигации, включающие практические статьи об AddressSanitizer, Benchmark, pybind11, gRPC и др.
-
Шаблоны проектирования
- Распространённые шаблоны проектирования: применение в C++ таких шаблонов, как «Одиночка» (Singleton), «Фабрика» (Factory), «Наблюдатель» (Observer) и др.
-
Параллельное программирование
- Многопоточность и многопроцессность: техники многопоточного программирования
std::thread,std::async,std::mutex,std::condition_variableи др. - C++ Concurrency in Action: глубокое исследование моделей и практики параллельного программирования в C++.
- Многопоточность и многопроцессность: техники многопоточного программирования
-
Идиомы C++
- Стиль программирования и идиомы: обсуждение распространённых стилей программирования и идиом C++, помогающих разработчикам писать более элегантный код.
-
Учебные курсы
- «Практика современного C++» из GeekTime: рекомендуемый учебный ресурс, помогающий разработчикам систематически изучить современный C++.
-
Инструменты
- Инструменты отладки и вывода: использование таких инструментов отладки, как
dbg-macro,rrи др. - Инструменты быстрого вывода контейнеров: инструменты, упрощающие вывод содержимого контейнеров.
- Наблюдение за процессом компиляции: наблюдение за изменениями в процессе компиляции кода C++ с помощью инструментов.
- Инструменты отладки и вывода: использование таких инструментов отладки, как
4. Особенности проекта¶
- Систематизированный путь обучения: от основ до продвинутого уровня, содержание строится постепенно и подходит учащимся разного уровня подготовки.
- Сочетание теории и практики: помимо теоретического материала, имеется множество примеров кода и практических проектов.
- Глубокий анализ исходного кода: анализ исходного кода классических открытых проектов помогает разработчикам глубже понять устройство и реализацию C++.
- Многопоточность и параллельность: глубокое исследование параллельного программирования на C++, помогающее разработчикам писать эффективные и безопасные параллельные программы.
- Ориентация на собеседования: разбор типичных вопросов с собеседований, помогающий соискателям лучше подготовиться.
5. Ресурсы проекта¶
- Онлайн-сайт для обучения: C++那些事
- Официальный аккаунт в WeChat: 光城
- Видео на Bilibili: 未来的光城, содержимое проекта продублировано на Bilibili в видеоформате для удобства зрителей.
6. Как принять участие¶
C++那些事 — проект с открытым исходным кодом, и мы приглашаем всех разработчиков внести свой вклад. Вы можете участвовать следующими способами:
- Star и Fork: если проект оказался для вас полезным, поставьте ему Star и сделайте Fork на GitHub.
- Отправка PR: если у вас есть хорошие материалы или предложения по улучшению, отправляйте Pull Request.
- Обратная связь и предложения: если при использовании проекта у вас возникли проблемы или есть какие-либо предложения, пишите в разделе Issue проекта.
7. Планы развития проекта¶
- Расширение дополнительных продвинутых тем: например, новые возможности C++20, метапрограммирование, вычисления во время компиляции и др.
- Добавление практических проектов: больше практических проектов, помогающих разработчикам применять полученные знания в реальной разработке.
- Развитие сообщества: создание более активного сообщества, поощрение общения и обмена опытом между разработчиками.
8. Заключение¶
C++那些事 — открытый проект, целью которого является помощь изучающим C++ в пути от новичка до продвинутого уровня. Независимо от того, новичок вы или опытный разработчик, здесь вы найдёте подходящие вам учебные материалы. Мы надеемся, что этот проект поможет большему числу людей освоить C++ и свободно применять его в реальной разработке.
Приглашаем всех разработчиков ставить Star, делать Fork и отправлять PR, чтобы вместе развивать сообщество C++!
9. Об авторе¶
-
WeChat: поиск по
gcxzhang -
Официальный аккаунт в WeChat
![]() 知识星球 (Zhishi Xingqiu) |
![]() Официальный аккаунт в WeChat |
|---|
- Поддержать автора
![]() Alipay |
![]() |
|---|



