C++
高性能与泛型编程
- 001入门C++ 是什么:为每一毫秒较真的人,最终都会遇见它以「一万人在线的排行榜为什么撑不住」引入,讲清 C++ 的定位、零开销抽象、与 C 的真实关系、编译到机器码的心智模型、主战场与版本策略,附现代 C++ 代码试读与常见误区实录。
- 002入门现代 C++ 与三次大版本:C++11、C++20、C++23 各带来了什么以「同样自称 C++ 的两份代码隔着二十五年」引入,按每版三个用户可感知特性讲清三次大版本,覆盖编译器三件套与 -std=c++23 开关、包管理现实与本模块学习主线,附新旧写法对比实验与真实编译报错。
- 003入门第一个程序与第一颗子弹:基本语法与未定义行为从空文件夹写出最小 main.cpp 并两步跑通,覆盖语句注释、cin/cout 最小交互与 int main 返回值的意义;再用越界数组实验正式引入未定义行为(UB),附 expected ';' 与 undefined reference to 'main' 两类真实报错的调试实录。
- 004入门分支与循环:控制流入门if/else-if/switch 三级递进、for/while/do-while 与范围 for、break/continue、条件运算符与循环三要素心智模型;以一元二次方程求根的三次迭代演示为什么需要分支,练习改编自真实课件题集(闰年、成绩五档、出租车计费、九九乘法表、素数、金字塔),并补输入校验循环等工程场景。
- 005中级类型不是标签,是承诺:字节、运算与转换以「排行榜平均分 296.67 打印成 296」引入,用 sizeof 实验建立「类型是承诺」心智模型,覆盖 auto 推导与 CTAD 一句、字面量后缀 1L/3.14f/u8、cstdint 固定宽度整型、隐式转换与花括号抓 narrowing,附 ambiguous conversion 真实报错调试实录。
- 006入门复合类型:数组、字符串、结构体与枚举数组声明与退化、std::array 与 vector 初识、C 字符串与 std::string 的分工、struct 聚合与位字段、枚举与 C++11 作用域枚举;用冒泡与选择排序同题两解、回文检测、二维数组行列互换、游戏背包结构体四个场景落地。
- 007中级helper 打架,链接器炸了:命名空间、链接与多文件工程以「两个 .cpp 都定义了叫 helper 的函数,链接器炸了」引入,讲透命名空间隔离、using 的正确姿势与头文件里禁 using namespace 的原因、内部链接与外部链接(static 与匿名命名空间)、三文件工程 math_utils.h/.cpp/main.cpp 的完整分工与 g++ 编译命令,附 multiple definition 与 undefined reference 两类真实报错的调试实录,ODR 一句话收尾。
- 008入门函数:参数传递、重载与递归函数原型与定义、按值/按引用/const 引用传递的选择、默认参数、重载解析、单递归与多递归、函数指针与 std::function 预告;用 swap 三版迭代讲透值传递语义,附三数求最大无函数版对照、阶乘与汉诺塔递归。
- 009中级排行榜按哪个字段排?Lambda:随写随用的匿名函数以「排行榜要按分数、名字、等级排序,为每个字段写一个函数?」引入,五段拆解最小 Lambda [](){},讲透与 std::sort 的配合(附预期输出)、捕获列表 [] / [=] / [&] / [x] 的取值时机与悬垂引用陷阱(-Wshadow 真实警告与逃逸作用域的运行时事故),附 'x' is not captured、capture of non-variable、use of deleted function 三类真实报错的调试实录,mutable 与尾置返回类型各一句话。
- 010进阶Lambda 捕获深水区:值、引用与这份「记住」的代价承接 Lambda 入门的深水区:按值与按引用捕获的取值时机实验、悬垂引用的真实事故现场、C++14 初始化捕获与 move 捕获、mutable 与 const 传播、*this 捕获,附 use-after-capture 调试实录。
- 011中级C++ 引用:必须存在的别名以「swap 终于能改到调用方的变量」引入,讲透左值引用、const 引用与临时对象延长、引用与指针的三点分工、悬空引用的成因与防线,附悬空引用调试实录。
- 012中级移动语义:把资源搬走,而不是复印一份用「传递 1 GB 玩家存档」的场景建立移动语义心智模型:左值右值判别、拷贝与移动的耗时对照实验、std::move 的真实含义与 moved-from 约定,附 use after move 调试实录。
- 013进阶移动语义深水区:noexcept、moved-from 与容器的真实行为拆开 090 建立的黑盒:移动构造与移动赋值的完整实现规范、noexcept 如何决定 vector 扩容走移动还是拷贝、moved-from 状态的团队纪律与 std::exchange、STL 容器的移动行为与 SSO,附内存泄漏调试实录。
- 014进阶完美转发与引用折叠:包装函数如何原样递参数承接移动语义的收官篇:万能引用 T&& 的两种形态、引用折叠规则表与 static_assert 验证实验、std::forward 与裸 std::move 的事故对照、emplace_back 与 push_back 的真实差异实验,附 forward 漏写的拷贝退化调试实录。
- 015中级C++ 指针:直接操作内存地址的原始力量以「函数改不动调用方的变量」引入,讲透取地址与解引用、指针与引用的分工、指针算术与数组退化、空指针与 const 修饰的读法,附 nullptr 与悬垂指针调试实录。
- 016中级C++ 智能指针:把 delete 交给对象的生命周期以「一行异常让清理代码永远执行不到」引入,用异常路径对照实验讲透 unique_ptr 独占所有权与 make_unique 的优势、shared_ptr 引用计数实验、weak_ptr 破解循环引用,附 LeakSanitizer 与 double-free 调试实录。
- 017进阶C++ 智能指针深水区:控制块、weak_ptr、循环引用与删除器主教学之后的机制与工程细节——控制块与 make_shared 缓存友好实验、shared_ptr 线程安全三级边界与 TSan 实录、enable_shared_from_this 的必要场景与误用崩溃、weak_ptr 全套操作与循环引用破环、双向链表/观察者/缓存/树四类典型结构、FILE* 自定义删除器,以及性能敏感路径上连 shared_ptr 都不用的纪律。
- 018中级RAII 与资源管理资源获取即初始化模式
- 019进阶RAII 资源管理实战跨领域 RAII 封装实战——文件句柄、内存、锁、网络套接字、数据库事务、OpenGL、CUDA 的守卫写法与自定义 RAII 类模板;机制与原则见 160 篇。
- 020进阶C++ 内存管理栈与堆、RAII、智能指针、内存池与自定义分配器。
- 021入门分配器与 std::pmr 内存资源从 std::allocator 接口讲到 std::pmr 三层 memory_resource 体系:为什么模板分配器难以传播、monotonic_buffer_resource 与 pool_resource 各自适合什么负载、如何在游戏帧循环与低延迟路径上做到零堆分配。
- 022中级异常安全异常机制基础到异常安全保证的一条主线:throw/catch 与标准异常层次、RAII 与栈展开、基本/强/不抛三级保证、copy-and-swap 事务式编程与异常中立性。
- 023入门错误处理策略选型:异常、std::expected 与错误码同一个「文件解析 + 网络请求」场景写三版实现对照:什么时候抛异常、什么时候返回 expected、什么时候错误码加 optional。覆盖 noexcept 交互、构造函数不能返回错误的约束、三层错误的传播成本与选型决策树。
- 024中级C++ 面向对象基础类与对象、封装、继承、多态与虚函数。
- 025中级运算符重载运算符重载规则与最佳实践
- 026进阶C++ 面向对象进阶构造与析构、多重继承与虚继承、CRTP 静态多态、对象生命周期、拷贝与移动控制、接口设计——OOP 进阶本位;操作符重载/模板/STL/虚函数表见各自专篇。
- 027进阶虚函数表与多态内存布局C++虚函数表(vtable)、虚指针(vptr)、多重继承内存布局、RTTI机制与多态实现原理的完整深度解析
- 028中级C++ STL 容器与迭代器顺序容器、关联容器、无序容器及迭代器体系。
- 029中级C++ STL 算法详解STL 算法库全解:非修改式、修改式、排序、搜索、数值、分区、堆、C++17 并行算法、C++20 Ranges、C++23 容器算法,含复杂度分析、迭代器约束、企业级实战与陷阱。
- 030入门函数对象与可调用对象仿函数、lambda、函数指针、std::function 与成员函数指针的统一视角:三种排序谓词写法的性能对照、priority_queue 自定义比较器、std::function 持有 shared_ptr 的 UI 回调表,以及「当模板参数还是当运行时值」的选型。
- 031进阶C++20 Ranges 范围库Ranges库与视图组合
- 032入门C++ tuple 与 pairC++ tuple 与 pair 完整教学:构造与访问、字典序比较、tie/apply/tuple_cat、多返回值实践、C++23 tuple-like 增强。
- 033入门C++ variant / optional / anyC++ 三大词表类型完整教学:optional 表示可能没有值、variant 表示若干类型之一、any 表示运行期任意类型,含选型对比与常见陷阱。
- 034入门C++ 结构化绑定语法速查手册C++ 结构化绑定(C++17)速查与教学:数组/pair/tuple/结构体解包、值类别与引用绑定、范围 for 解构、C++20 扩展与常见陷阱。
- 035中级C++ 模板C++ 模板完整解析:函数模板、类模板、模板特化、SFINAE、概念(concepts)与现代 C++ 泛型实践。
- 036进阶constexpr 与编译期计算constexpr/consteval/constinit完整原理、编译期求值模型、立即函数、constexpr if、编译期容器、与模板元编程的关系及工业级应用
- 037进阶类型特征与 SFINAE:让模板按类型上岗以「只接受整型的 serialize 传 string 爆出上百行模板错误」引入,讲透 is_integral_v 与 enable_if 最小用法、SFINAE 一句话原则、void_t 探测惯用法,并用真实报错对照 static_assert 人话报错与 C++20 concepts。
- 038进阶类型萃取深水区:detect 框架与三种分派写法承接 350 进入萃取工程:读 iterator_traits 与 allocator_traits、void_t 探测装配成 detect 框架、tag dispatch / SFINAE / if constexpr 三版并排、conjunction/disjunction 组合与短路实例化。
- 039进阶变参模板:一个函数吃下任意个数、任意类型的参数以「printf 类型不安全、想要一个能收任意个任意类型参数的日志函数」引入,讲透模板参数包与函数参数包的声明、递归展开加终止函数的两段式写法、sizeof... 的编译期计数,回收完美转发解释 emplace_back 为什么离不开参数包,附「缺终止函数」的真实编译报错调试实录。
- 040进阶折叠表达式:把参数包递归压缩成一行承接变参模板的深水区篇:四种折叠形态各配可运行实验(一元左右折叠用减法看到方向差异、二元折叠救空包)、逗号折叠遍历包与流插入折叠、make_tuple 与完美转发两类包展开模式,附空包一元折叠与移位误当输出的调试实录,预告 C++26 包下标。
- 041进阶模板元编程系统阐述 C++ 模板元编程(Template Metaprogramming, TMP)的理论与实践:从 Cfront 1989 到 C++23 Deducing this 的演进史、模板图灵完备性的形式化定义、SFINAE 与 Concepts 的形式化语义、模板实例化复杂度与编译期递归深度分析、模板特化与偏特化、可变参数模板与折叠表达式、CRTP/Expression Templates/Policy-Based Design/Type Erasure 等工程范式、Eigen/Boost.MPL/fmt/std::ranges 案例剖析、与 Rust/Java/Haskell/Zig/D 的对比分析、常见陷阱与习题,覆盖生产级 C++ 模板工程的全部核心知识。
- 042进阶C++反射与元编程没有语言级反射的 C++ 如何模拟反射:RTTI、宏注册、模板技巧、外部代码生成四条路线的原理与取舍,并交代 C++26 静态反射的落地进度。
- 043入门C++26 静态反射P2996 静态反射的语法级讲解:^^ 反射算子、[: :] 拼接、template for 展开语句与 std::meta 工具函数,用枚举转字符串、结构体序列化、CLI 参数解析三个例子对照传统宏与 Boost.PFR 方案,并交代编译器落地现状。
- 044进阶C++20 概念C++20 Concepts约束模板详解。
- 045进阶C++20 协程:无栈协程与状态机变换C++20 协程深水参考:三关键字与协程判定、Promise/Awaiter 三步协议、编译器状态机变换与协程帧布局、对称转移与 HALO,附 ASan/编译器真实报错与调试实录、生产级 Task/Generator 实现。
- 046进阶多线程入门:从单线程 10 秒到四线程 3 秒以「图片批量缩放单线程约 10 秒、四线程约 3 秒」引入,讲透 std::thread 创建与 join 的最小生命周期、detach 的危险一句话、非原子计数丢失更新的竞态对照实验与 mutex 加 lock_guard 修复,警告数据竞争是未定义行为并与 030 篇 UB 呼应,最后给出 atomic 最小替换示例与 ThreadSanitizer 实录。
- 047进阶并发工程:条件变量、死锁与 future 的取舍承接多线程入门的深水区篇:condition_variable 生产者消费者完整实现与谓词防虚假唤醒、两把锁的死锁最小实验与锁排序纪律(ASan 与 TSan 都抓不到死锁,用线程序评审)、future/promise/async 取舍实验(默认策略可能根本不开线程)、shared_mutex 读写场景一句话,附忘发通知与线程 join 自己的真实报错。
- 048进阶C++内存模型C++11 原子操作、内存序、happens-before 关系与无锁编程的工程实践
- 049进阶内存序与无锁编程C++内存序与无锁编程详解:std::memory_order、std::atomic、fence、ABA 问题与无锁数据结构。
- 050中级字符串处理std::string与字符串视图
- 051中级C++格式化输出std::format与格式化
- 052中级C++正则表达式regex库与模式匹配
- 053中级C++ 日期时间C++ chrono 库全解:duration、time_point、clock、C++20 日历与时区、C++23 时区数据库、leap second、计时基准、跨平台精度,含类型安全设计、UB 场景与企业级实战。
- 054中级文件 IO 与文件系统文件操作与std::filesystem
- 055中级C++序列化JSON与二进制序列化
- 056中级C++网络编程Socket编程与网络协议
- 057中级C++ 图形编程:亲手点亮第一个三角形从一张像素图想在屏幕上显示的真实需求出发,搭好 GLFW + GLAD 环境、画出第一个三角形、贴上纹理、应用变换矩阵,并把渲染管线逐阶段对应到刚写的代码,附黑屏排查实录与自检清单。
- 058进阶C++游戏开发游戏引擎与C++游戏开发
- 059进阶C++嵌入式开发嵌入式C++开发要点
- 060中级C++数学库数值计算、标准数学库与高性能第三方数学库的工程实践