来源书籍

Effective Modern C++_ 42 Specific Ways to Improve Your Use

编程语言类

经典原理(高信息浓度 + 高稳定性)

本书虽然围绕 C++11/14 的具体语言特性展开,但重点不是 API 罗列,而是解释类型推导、值类别、资源所有权、异常规格、并发句柄生命周期等机制为什么会这样设计,以及错误使用会导致怎样的语义偏差。例如模板推导与 `auto` 的差异、`std::move` 只是类型转换、`noexcept` 会影响容器移动策略、`shared_ptr` 控制块带来所有权成本,这些都属于可迁移的底层规则。现代 C++ 标准继续演进,但这些语义基础在 C++11 之后长期稳定,仍能指导新代码的接口设计和性能判断。

类别清单覆盖

8/9

已覆盖 8 补充生成 0 未覆盖 1

全书概览

Effective Modern C++_ 42 Specific Ways to Improve Your Use

  • 类别:编程语言类
  • 历史 Skill 版本:book-notes v7;2026-09-09 完成 S0–S7 全流程升级并经独立终审通过,详见 _workflow.md 最终验收快照。
  • 内容语境:C++1114 条款与可迁移原则;版本修正以来源附注区分。

整体评级

四象限结论:经典原理(高信息浓度 + 高稳定性) 理由:本书虽然围绕 C++1114 的具体语言特性展开,但重点不是 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 简介与资源

  1. 值类别不等于类型 普通读书笔记卡
  2. 闭包保存捕获状态 普通读书笔记卡

00

  1. 异常安全两层保证 普通读书笔记卡

01 类型推导

  1. 模板推导三形态 普通读书笔记卡
  2. auto的花括号例外 普通读书笔记卡
  3. decltype保留表达式 普通读书笔记卡
  4. 类型查看非真相 普通读书笔记卡
  5. 数组函数会退化 普通读书笔记卡
  6. 保留限定符的类型观察 延伸参考卡

02 auto

  1. 优先auto 普通读书笔记卡
  2. 显式初始化惯用法 普通读书笔记卡
  3. 代理对象不是值 普通读书笔记卡

03 移步现代C++

  1. 花括号不总安全 普通读书笔记卡
  2. nullptr消除歧义 普通读书笔记卡
  3. 别名声明胜出 普通读书笔记卡
  4. 限域枚举隔离 普通读书笔记卡
  5. 删除函数更明确 普通读书笔记卡
  6. override锁定重写 普通读书笔记卡
  7. 默认const迭代 普通读书笔记卡
  8. noexcept是契约 普通读书笔记卡
  9. constexpr双重身份 普通读书笔记卡
  10. const也要线程安全 普通读书笔记卡
  11. 特殊成员联动 普通读书笔记卡
  12. 类型特性在编译期变换 普通读书笔记卡
  13. 成员函数也分左右值 普通读书笔记卡
  14. 成员模板不替代拷贝 普通读书笔记卡

04 智能指针

  1. unique_ptr表达独占 普通读书笔记卡
  2. shared_ptr控制块 普通读书笔记卡
  3. 弱引用通过锁定访问 普通读书笔记卡
  4. make函数优先 普通读书笔记卡
  5. Pimpl析构放实现 普通读书笔记卡
  6. 同一对象一个控制块 普通读书笔记卡
  7. 从自身取得共享所有权 普通读书笔记卡
  8. 弱引用延迟释放内存 普通读书笔记卡

05 右值引用,移动语义,完美转发

  1. move只是转换 普通读书笔记卡
  2. 通用引用有条件 普通读书笔记卡
  3. move与forward分工 普通读书笔记卡
  4. 别重载通用引用 普通读书笔记卡
  5. 约束转发入口 普通读书笔记卡
  6. 引用折叠规则 普通读书笔记卡
  7. 别迷信移动 普通读书笔记卡
  8. 完美转发会失败 普通读书笔记卡
  9. 返回值优化省掉构造 普通读书笔记卡
  10. 标签分派选择实现 普通读书笔记卡
  11. 条件禁用转发模板 普通读书笔记卡
  12. 短字符串可能移不快 普通读书笔记卡

06 lambda表达式

  1. 默认捕获藏生命周期 普通读书笔记卡
  2. 初始化捕获迁移资源 普通读书笔记卡
  3. 泛型lambda要转发 普通读书笔记卡
  4. lambda优于bind 普通读书笔记卡

07 并发API

  1. 任务高于线程 普通读书笔记卡
  2. 显式async策略 普通读书笔记卡
  3. thread必须收束 普通读书笔记卡
  4. future析构有差异 普通读书笔记卡
  5. void future传事件 普通读书笔记卡
  6. 原子不等于易变 普通读书笔记卡
  7. 线程超额增加调度成本 普通读书笔记卡
  8. RAII绑定退出动作 普通读书笔记卡
  9. 共享状态连接异步两端 普通读书笔记卡
  10. 唤醒不等于条件成立 普通读书笔记卡
  11. 启动线程前初始化依赖 普通读书笔记卡

08 微调

  1. 按值传参有边界 普通读书笔记卡
  2. 置入不总更快 普通读书笔记卡
  3. 置入前先托管资源 普通读书笔记卡

相关主题

暂无公开主题。