Day1 C++ 回顾补一小节:C++11/14/17/20+ 新标准巡礼

原「C++ 环境搭建/高级程序回顾」只覆盖语言老知识点(namespace/重载/引用/
虚析构/模板),没有让学员感受到 C++ 这些年一直在大幅进化。新增一个概念性
知识点(无配套代码,同 Vcpkg 那一条的先例):按标准列出 C++11→20 的核心
新特性(auto/智能指针/移动语义/lambda → concepts/ranges/协程/模块),
并提醒"新标准≠生产环境能直接用",挂钩本仓库自身的 C++17 基线选择和
tools/std_probe.py。OUTLINE.md 表格行/核心概念条目与 day1.html 新增幻灯片
一一对应。
This commit is contained in:
张宗平
2026-07-02 16:41:48 +08:00
parent a6743fcea0
commit 9765865d13
2 changed files with 44 additions and 0 deletions
+6
View File
@@ -132,6 +132,7 @@ Day25 讲:练 ≈ 1:2.7Day1 模块 A 是讨论型任务(不追求"练"
| 引用的本质 | `p01/ch03/reference_essence.cpp` | "引用是自动解引用的 const 指针" |
| 虚析构与内存泄漏 | `p01/ch04/s08/virtual_dtor_purpose.cpp` | 基类指针 delete 派生类对象的经典坑 |
| 模板与 STL 速览 | `p01/ch05/class_template_basics.cpp``p01/ch09/s03/vector_iterator.cpp` | 泛型编程 + 容器/迭代器,只点名不展开 |
| C++11/14/17/20+ 新标准巡礼(概念,无演示) | 无仓库代码 | 让学员看到 C++ 不是停滞的语言:auto/智能指针/移动语义/lambda(11) → concepts/ranges/协程(20),每 3 年一次实打实的能力升级 |
| CMake 项目构建 | 本仓库 `CMakeLists.txt``p03/CMakeLists.txt` | 用真实项目当教材:`option(BUILD_QT_PART)``add_subdirectory`、每个示例一个 `add_executable` 目标 |
| Vcpkg 包管理器(概念,无演示) | 无仓库代码 | C++ 生态的包管理器,解决"第三方库怎么装、怎么被 CMake 找到"的问题;本仓库用的是"隔离 Qt 手动装"而非 vcpkg,两种思路都要认识 |
@@ -148,6 +149,11 @@ Day25 讲:练 ≈ 1:2.7Day1 模块 A 是讨论型任务(不追求"练"
派生类析构;坑——只要类可能被继承+可能被基类指针删除,就该把析构声明为 virtual。
- **模板与 STL 速览**:概念——泛型编程让代码脱离具体类型复用,迭代器是容器与算法之间的统一
接口;坑——容器扩容/删除元素后旧迭代器可能失效,继续用是未定义行为。
- **C++11/14/17/20+ 新标准巡礼**:概念——C++11auto/智能指针/移动语义/lambda/语言级线程)
→ C++14(泛型 lambda/返回类型推导)→ C++17(结构化绑定/if-init/optional·variant·string_view/
filesystem)→ C++20concepts/ranges/协程/模块/三路比较),每个标准都是实打实的能力升级,
不是小修小补;坑——新标准不等于现在能用,生产环境编译器/CI 常年落后最新标准 1–2 个版本,
用新特性前先确认目标工具链 `-std=` 支持到哪(可用 `tools/std_probe.py` 自己验证)。
- **CMake 项目构建**:概念——CMake 是"生成构建系统的工具"而非构建系统本身,`-S -B` 生成、
`--build` 才是真正编译;坑——改了生成器相关配置(换生成器/清缓存)后要重新走一次 `-S -B`
- **Vcpkg 包管理器**:概念——一次 `vcpkg install` 配合 CMake toolchain 文件,`find_package`