# cpp-learning **Repository Path**: PhiloKun/cpp-learning ## Basic Information - **Project Name**: cpp-learning - **Description**: 从零到现代 C++(C++11/14/17/20)的系统性学习笔记:20 章知识笔记 + 40 个可一键编译运行的示例 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-08 - **Last Updated**: 2026-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # C++ 完整知识体系 > 当前版本:v1.0.0(见 `version.txt`) > 从零到现代 C++(C++11 → C++17 → C++20)的系统性学习仓库。 > 每一章 = 一份详细笔记(README.md)+ 若干可直接编译运行的示例代码(`.cpp`)。 ## 本机环境 | 项目 | 值 | |---|---| | 编译器 | Apple clang 21.0.0(arm64-apple-darwin25.6.0) | | `g++` / `clang++` | 均有,`g++` 在 macOS 上是 clang 的别名 | | 推荐标准 | `-std=c++20`(本机 clang 21 支持大部分 C++20/23) | | cmake | 未安装 → 用仓库自带的 `build.sh` 一键编译 | ## 快速开始 ```bash cd /Users/philokun/code/cpp-learning ./build.sh # 编译全部示例 → 输出到 build/ ./build.sh 05 # 只编译第 05 章 ./build.sh run 05 # 编译并运行第 05 章所有示例 ./build.sh clean # 清理 ``` 单文件手动编译: ```bash clang++ -std=c++20 -Wall -Wextra -O2 -o demo 05-指针与引用/pointer_basics.cpp && ./demo ``` ## 学习路线 ``` 阶段一:语言基础(打地基,必须手写) 01 环境搭建与编译模型 → 02 基础语法与数据类型 → 03 流程控制与函数 04 数组字符串与枚举 → 05 指针与引用 ★核心难点 阶段二:内存与对象(C++ 的分水岭) 06 内存管理与RAII ★ → 07 结构体与类 → 08 继承与多态 ★ 09 运算符重载 阶段三:泛型与标准库(写代码的生产力来源) 10 模板与泛型编程 ★ → 11 STL容器 → 12 迭代器与算法 13 移动语义与完美转发 ★ → 14 Lambda与函数对象 阶段四:工程化与系统编程 15 异常处理 → 16 文件与IO流 → 17 并发编程 ★ 18 现代C++新特性(C++20: concepts / ranges / coroutine / modules) 阶段五:收口 19 最佳实践与陷阱(必读,避坑清单) 20 综合实战项目(线程池 + 线程安全日志 + 并行任务 + 内置自检) ``` 带 ★ 的章节是 C++ 与其他语言差异最大、最需要花时间的部分。 ## 章节索引 | # | 章节 | 核心内容 | |---|---|---| | 01 | [环境搭建与编译模型](01-环境搭建与编译模型/README.md) | 编译四阶段、头文件/源文件、ODR、CMake、编译期与运行期 | | 02 | [基础语法与数据类型](02-基础语法与数据类型/README.md) | 内置类型、字面量、auto、const/constexpr、类型转换、命名空间 | | 03 | [流程控制与函数](03-流程控制与函数/README.md) | 分支循环、函数重载、默认参数、内联、递归、函数指针 | | 04 | [数组字符串与枚举](04-数组字符串与枚举/README.md) | 原生数组、`std::array`、C 字符串、`std::string`、`string_view`、`enum class` | | 05 | [指针与引用](05-指针与引用/README.md) | 指针运算、`const` 与指针、引用本质、指针 vs 引用、多级指针 | | 06 | [内存管理与RAII](06-内存管理与RAII/README.md) | 栈/堆布局、`new/delete`、RAII、三五法则、`unique_ptr`/`shared_ptr`/`weak_ptr` | | 07 | [结构体与类](07-结构体与类/README.md) | 访问控制、构造/析构、初始化列表、`this`、`static`、友元 | | 08 | [继承与多态](08-继承与多态/README.md) | 虚函数表、`override`/`final`、抽象类、多重继承与菱形继承、虚析构 | | 09 | [运算符重载](09-运算符重载/README.md) | 可重载清单、`<<`/`>>`、下标/调用/转换运算符、重载规则与陷阱 | | 10 | [模板与泛型编程](10-模板与泛型编程/README.md) | 函数/类模板、特化、变参模板、折叠表达式、SFINAE、C++20 Concepts | | 11 | [STL容器](11-STL容器/README.md) | 序列/关联/无序/适配器全景、时间复杂度、迭代器失效 | | 12 | [迭代器与算法](12-迭代器与算法/README.md) | 五类迭代器、``、``、C++20 Ranges | | 13 | [移动语义与完美转发](13-移动语义与完美转发/README.md) | 左值/右值、移动构造、`std::move`/`std::forward`、RVO、引用折叠 | | 14 | [Lambda与函数对象](14-Lambda与函数对象/README.md) | 捕获方式、泛型 lambda、`std::function`、`std::bind`、回调设计 | | 15 | [异常处理](15-异常处理/README.md) | `try/catch`、异常安全三级别、`noexcept`、标准异常体系 | | 16 | [文件与IO流](16-文件与IO流/README.md) | iostream 体系、格式化、`fstream`、`stringstream`、`std::filesystem` | | 17 | [并发编程](17-并发编程/README.md) | `thread`、互斥量、`atomic`、`condition_variable`、`async/future`、死锁 | | 18 | [现代C++新特性](18-现代C++新特性/README.md) | C++11→20 特性清单、`optional`/`variant`/`any`、结构化绑定、`constexpr` | | 19 | [最佳实践与陷阱](19-最佳实践与陷阱/README.md) | 未定义行为清单、Core Guidelines 摘录、命名规范、调试与性能 | | 20 | [综合实战项目](20-综合实战项目/README.md) | 线程池 + 线程安全日志 + 并行任务处理的完整工程 | ## 推荐配套资源 - **书**:《C++ Primer》(入门全能)、《Effective Modern C++》(进阶必读)、《C++ Concurrency in Action》(并发) - **在线**:[cppreference.com](https://en.cppreference.com)(权威速查)、[C++ Core Guidelines](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines) - **练习**:[LeetCode](https://leetcode.cn)(用 STL 刷题)、[Exercism C++ track](https://exercism.org/tracks/cpp) - **编译期玩具**:[Compiler Explorer](https://godbolt.org) 看汇编,理解引用/移动/虚函数的底层实现