BOOK / SOURCE & READING RECORD
The C++ Programming Language
Bjarne Stroustrup
4th edition, second printing June 2013, ISBN 9780321563842;另读 first printing May 2013 出版社样章
The C++ Programming Language
已分段通读第1—44章全部正文(印刷页3—1279),含代码、表格、章末建议,另读各版前言;私有文本L140—59048连续覆盖。随后直接核读126个已定位的原PDF图示、公式及上下文页,补齐对象布局、继承箭头、矩阵、流和并发等视觉内容。full指正文及已识别的实质图示读完,不表示逐页校勘全部1366个PDF页面;索引仅导航抽查,未逐条读。原书是C++11基线,C++20差异单列。
查看版本、实际阅读范围与原文入口 →不变量与失败提交是同一条设计线
从导览的Vector到异常章的原始存储管理,再到复制移动与Matrix,贯穿全书的是让对象表示某个可维持的承诺。构造建立承诺,成员操作维护承诺,资源成员让构造失败仍能组合清理。复制并非逐字节相同,移动也不是把每个源对象都清空;自指针、共享状态和视图会把多个成员的关系变成真正的设计责任。先准备替代状态再提交,可以保留旧值;复用容量虽省分配,却可能改变失败保证。业务类型应优先组合标准资源句柄,只有不变量要求时才手写特殊成员,不能把教学容器直接当生产实现。
阅读定位:§2.4.3;§13.3、§13.6;§17.5—17.6;§29.2—29.4,pp.55—57、354—387、507—523、828—849
泛型化是在删除不必要假设
书中从具体求和提炼迭代器与操作,再讨论concept、traits、策略和实例化。真正的复用不是给一切套模板,而是分清问题要求与当前实现偶然用到的能力:累加器类型不必等于元素类型,算法不必要求所有容器共同继承,某成员的排序要求也不必强加给整个类。模板接口还受名字查找环境影响;ADL不是普通查找失败才启动的后备路径。C++20 concepts能把部分接口要求写进语法,却不能自动证明比较关系、值语义或复杂度。书中的Enable_if与概念讨论属于C++11时代,不应标为现代requires范例。
阅读定位:§12.3;§14.2.4;§23.4.6.3;§24.2—24.4;§26.2—26.3;§28.4,pp.326—330、396—397、680—682、700—719、743—758、795—804
拥有数据、观察数据、组织布局要分开
Matrix与Matrix_ref把存储所有权和切片映射分离;string与正则捕获又把拥有字符和借用迭代器分离。这些例子提醒我们,返回一个看似普通的值并不能证明它拥有所指数据,auto也不会消除借用寿命。容器选择同样不是只比较大O:节点定位、局部性、分配和迭代器失效都会影响接口。reserve只准备空间,resize才创建元素;remove只压缩逻辑区间,erase才改变容器大小。现代span与string_view继续体现这种分工,但mdspan是C++23,而不是C++20已有设施;任何视图都要另行证明源存储足够长寿。
阅读定位:§29.2—29.4;§31.2—31.4;§32.5;§34.2;§36.3;§37.2,pp.828—849、888—920、939—944、974—987、1037—1048、1058—1063
并发先定义结果语义,再决定执行机制
原子性、所有权与同步是三件事:智能指针管理寿命,atomic提供单个操作的约束,完整协议仍须说明冲突访问与happens-before。thread句柄即使对应工作已经结束,仍可能joinable,detach也只是放弃观察而非消除借用责任。条件变量等待的是受锁保护的谓词,不是一条通知;future把值、异常和完成状态组织在同一结果通道。并行find的最低位置匹配、最早完成匹配和全部匹配不是同一个功能,必须先选语义再谈加速。C++20的jthread、停止请求和原子等待是后来的工具,不应倒写为本书已讲内容。
阅读定位:§5.3;§41.2—41.5;§42.2—42.4,pp.113—123、1193—1207、1210—1250
原文与实际阅读范围
- 作者第四版页面
书目信息、目录、习题及样章入口,不是全书
- 出版社正式样章
第2—5章,印刷页37—132
- 作者勘误
第3—5章相关纠错;未把整页勘误当作已读章节
公开可读第四版全文(私有研究来源,非授权转载声明)
第二次印刷June2013;第1—44章正文全部读完;另核读126个精确定位的PDF图示/公式页,私有台账记录物理页码
研究副本不在本站公开链接。
原书版权页保留所有权利;公开仓库可访问不等于上传者获授权,也不等于本站获得转载许可。PDF及提取文本仅保留在私有研究目录;本站只发布原创中文综合讲解、原创程序及来源链接,不托管书籍副本。
能下载不等于已经读完;试读章节不等于全书。这里的原创笔记不是原书全文、译本或逐章替代品。
相关基础知识
相关主题链接用于补充背景,不表示这些既有文章已经按整本书核查。