来源书籍
Effective Modern C++_ 42 Specific Ways to Improve Your Use
编程语言类
类别清单覆盖
8/9
全书概览
Effective Modern C++_ 42 Specific Ways to Improve Your Use
- 类别:编程语言类
- 历史 Skill 版本:book-notes v7;2026-09-09 完成 S0–S7 全流程升级并经独立终审通过,详见
_workflow.md最终验收快照。 - 内容语境:C++11⁄14 条款与可迁移原则;版本修正以来源附注区分。
整体评级
四象限结论:经典原理(高信息浓度 + 高稳定性)
理由:本书虽然围绕 C++11⁄14 的具体语言特性展开,但重点不是 API 罗列,而是解释类型推导、值类别、资源所有权、异常规格、并发句柄生命周期等机制为什么会这样设计,以及错误使用会导致怎样的语义偏差。例如模板推导与 auto 的差异、std::move 只是类型转换、noexcept 会影响容器移动策略、shared_ptr 控制块带来所有权成本,这些都属于可迁移的底层规则。现代 C++ 标准继续演进,但这些语义基础在 C++11 之后长期稳定,仍能指导新代码的接口设计和性能判断。
章节筛选
00 简介与资源:精读简介中的值类别和闭包定义;版权、目录与贡献者仍略读。概念不能随前言整体跳过。
01 类型推导:精读。模板、auto、decltype 是现代 C++ 泛型代码的根部规则,误解会连锁影响接口设计。
02 auto:精读。auto 改变声明方式,也暴露代理类型和初始化语法的陷阱。
03 移步现代C++:精读。覆盖初始化、nullptr、enum、deleted、override、noexcept、constexpr、线程安全 const 和特殊成员等稳定设计规则。
04 智能指针:精读。资源所有权、控制块、weak_ptr、make 函数和 Pimpl 都是现代 C++ 内存管理核心。
05 右值引用,移动语义,完美转发:精读。右值引用、引用折叠、forwarding 与移动成本判断是现代 C++ 性能和接口正确性的核心。
06 lambda表达式:精读。捕获、初始化捕获、泛型 lambda 与 bind 替代关系影响回调代码的安全性和可读性。
07 并发API:精读。async、future、thread、atomic、volatile 的语义差异直接决定并发程序的生命周期和内存正确性。
08 微调:精读。按值传参与 emplacement 是性能优化的边界条件分析,适合沉淀成可迁移判断规则。
章节进度追踪
章节号 章节标题 精读/略读 状态(pending/done) 卡片数 00 简介与资源 精读 done 3 01 类型推导 精读 done 6 02 auto 精读 done 3 03 移步现代C++ 精读 done 14 04 智能指针 精读 done 8 05 右值引用,移动语义,完美转发 精读 done 12 06 lambda表达式 精读 done 4 07 并发API 精读 done 11 08 微调 精读 done 3
实践卡进度
| 序号 | 实践标题 | 实践方式 | 状态 | 关联章节 | 产出 |
|---|---|---|---|---|---|
| 1 | 所有权选择对照审查 | 横向学习 | done | 04 | ideas/idea-001-所有权选择对照审查.md |
| 2 | 异步句柄退出路径核对 | 横向学习 | done | 07 | ideas/idea-002-异步句柄退出路径核对.md |
已完成的是计划及书内对照材料;实际代码审查、案例推演尚未执行。未采用重写智能指针/线程池方案,因为先比较已有抽象即可回答本轮问题。
类别清单核对
| 维度 | 覆盖状态 | 关联卡片或未覆盖理由 |
|---|---|---|
| 类型系统 | 已覆盖 | [[模板推导三形态]]、[[decltype保留表达式]]、[[值类别不等于类型]] |
| 内存管理模型 | 已覆盖 | [[unique_ptr表达独占]]、[[shared_ptr控制块]]、[[弱引用延迟释放内存]] |
| 并发/并行模型 | 已覆盖 | [[任务高于线程]]、[[线程超额增加调度成本]]、[[原子不等于易变]] |
| 错误处理机制 | 已覆盖 | [[noexcept是契约]]、[[RAII绑定退出动作]]、[[共享状态连接异步两端]] |
| 编译/执行模型 | 已覆盖 | [[constexpr双重身份]]、[[Pimpl析构放实现]]、[[返回值优化省掉构造]];覆盖编译期求值与编译依赖,非完整编译器教程 |
| 模块/包与命名空间设计 | 未覆盖 | 条款10展开枚举作用域,已记[[限域枚举隔离]];全书未系统讲解模块/包及命名空间设计,不以枚举替代完整维度 |
| 语言设计哲学与取舍 | 已覆盖 | [[花括号不总安全]]、[[默认捕获藏生命周期]]、[[按值传参有边界]] |
| 元编程/反射/宏能力 | 已覆盖 | [[类型特性在编译期变换]]、[[标签分派选择实现]]、[[条件禁用转发模板]];侧重模板元编程,不声称覆盖完整反射/宏体系 |
| 性能特性与其代价 | 已覆盖 | [[别迷信移动]]、[[短字符串可能移不快]]、[[置入不总更快]] |
待关联术语
| 术语名 | 出现章节 | 一句话语境 |
|---|---|---|
| pthreads / Windows threads | 07 条款35 | 作为标准库并发设施底层API提及,没有系统展开其接口 |
引用文献
| 标题 | 类型 | 出现章节 | 一句话语境 |
|---|---|---|---|
| ThreadRAII + Thread Suspension = Trouble? | 文章 | 07 条款39 | 原文指向作者博客,用于继续研究线程暂停与RAII退出交互 |
资金安全问题案例
未发现支付、转账或额度一致性相关案例;本书中的一般资源生命周期问题不改标为资金安全案例。
章节与卡片
00 简介与资源
00
- 异常安全两层保证 普通读书笔记卡
01 类型推导
- 模板推导三形态 普通读书笔记卡
- auto的花括号例外 普通读书笔记卡
- decltype保留表达式 普通读书笔记卡
- 类型查看非真相 普通读书笔记卡
- 数组函数会退化 普通读书笔记卡
- 保留限定符的类型观察 延伸参考卡
02 auto
03 移步现代C++
- 花括号不总安全 普通读书笔记卡
- nullptr消除歧义 普通读书笔记卡
- 别名声明胜出 普通读书笔记卡
- 限域枚举隔离 普通读书笔记卡
- 删除函数更明确 普通读书笔记卡
- override锁定重写 普通读书笔记卡
- 默认const迭代 普通读书笔记卡
- noexcept是契约 普通读书笔记卡
- constexpr双重身份 普通读书笔记卡
- const也要线程安全 普通读书笔记卡
- 特殊成员联动 普通读书笔记卡
- 类型特性在编译期变换 普通读书笔记卡
- 成员函数也分左右值 普通读书笔记卡
- 成员模板不替代拷贝 普通读书笔记卡
04 智能指针
- unique_ptr表达独占 普通读书笔记卡
- shared_ptr控制块 普通读书笔记卡
- 弱引用通过锁定访问 普通读书笔记卡
- make函数优先 普通读书笔记卡
- Pimpl析构放实现 普通读书笔记卡
- 同一对象一个控制块 普通读书笔记卡
- 从自身取得共享所有权 普通读书笔记卡
- 弱引用延迟释放内存 普通读书笔记卡
05 右值引用,移动语义,完美转发
06 lambda表达式
- 默认捕获藏生命周期 普通读书笔记卡
- 初始化捕获迁移资源 普通读书笔记卡
- 泛型lambda要转发 普通读书笔记卡
- lambda优于bind 普通读书笔记卡
07 并发API
- 任务高于线程 普通读书笔记卡
- 显式async策略 普通读书笔记卡
- thread必须收束 普通读书笔记卡
- future析构有差异 普通读书笔记卡
- void future传事件 普通读书笔记卡
- 原子不等于易变 普通读书笔记卡
- 线程超额增加调度成本 普通读书笔记卡
- RAII绑定退出动作 普通读书笔记卡
- 共享状态连接异步两端 普通读书笔记卡
- 唤醒不等于条件成立 普通读书笔记卡
- 启动线程前初始化依赖 普通读书笔记卡
08 微调
相关主题
暂无公开主题。