BOOK / SOURCE & READING RECORD
More Effective C++: 35 New Ways to Improve Your Programs and Designs
Scott Meyers
Original first edition, 1995/1996; additional accessed Chinese composite PDF credits ZHC for Items1–28 and WQ for Items29–35; exact published translation edition unverified
More Effective C++: 35 New Ways to Improve Your Programs and Designs
已通读公开267页中文合编PDF的全部技术条目Items1–35(PDF11–240)、推荐读物与auto_ptr附录(240–247)、两篇附加文章(247–267),并直接读图核对正文全部31幅嵌入图及第9页记号说明。full仅指这一公开中文文本的全部实质章节,不是英文原版或商业中文版逐页核验:商业译本版次未确认;前置4–5页中文在源PDF及图像均为方框,未恢复,也不计技术正文。另读过出版社英文Item33交叉核对;历史译注与代码错误不当作C++20规则。
查看版本、实际阅读范围与原文入口 →基类赋值不是多态复制
完整读到 Item 33 后,值得保留的是接口审查方法,而不是见到继承就增加抽象层。若基类暴露赋值,调用者可以通过基类引用只更新对象的一部分;若把赋值虚化,又必须处理两端动态类型不同的问题。合理的接口应先说明复制究竟是替换值、修改已有实体,还是产生新实体。只读多态服务往往根本不需要公共基类赋值,把它限制到受保护区域能缩小错误空间,而具体叶子仍可拥有正常值语义。C++11 之后可以用 final 和类型特征明确这些意图,但不能把 final 当作保护基类赋值的替代。书中的 auto_ptr 是历史设施,不应带进 C++20 新代码。
阅读定位:英文出版社Item33全文;中文合编PDF Items9–10(41–54页)、33(219–229页)
保留问题分析,替换过时的实现前提
读完整套中文条文后,最需要防止的是把历史实现能力误当成今天的语言限制。引用计数与代理讨论揭示了借用指针逃逸后,共享写入会破坏值语义;这仍是评审自定义数据结构的好问题,但不能据此认为现代std::string采用写时复制。临时对象章节正确强调不要返回局部引用,却把返回值优化当成编译器可选能力;C++17起某些纯右值返回已经直接构造结果,具名局部返回仍是不同情形。异常章节的动态异常规格、对异常常态路径开销的旧测量及不支持explicit的替代手法也只宜作历史材料。先识别被维护的不变量,再选当前标准设施,比复刻旧代码更可靠。
阅读定位:中文合编PDF Items14–15(67–74页)、20(90–94页)、29–30(152–193页)
原文与实际阅读范围
Public Chinese composite PDF, private analysis only
267页;Items1–35正文PDF11–240及附录240–267全部技术文字已读,正文31幅嵌入图已直接核对。前置4–5页源文件缺字,不算已读;译者署名混合,不等同于已核实的商业中文版。
研究副本不在本站公开链接。
- More Effective C++ Item 33
完整Item33正文;公有继承中的部分赋值、异类赋值、抽象接口与具体叶子。
- More Effective C++ Item 5 truncated excerpt
仅可见的隐式转换讨论与数组误比较例,页面中途终止。
- More Effective C++ Item 9 truncated excerpt
资源清理、异常出口、auto_ptr历史方案,至GUI示例开头。
- More Effective C++ Item 10 truncated excerpt
构造失败与裸资源泄漏,至catch中的delete片段;原始HTML也已截断。
- InformIT catalog and 35-item contents
版次、35条目录及购买入口。
第三方公开PDF不构成再分发许可,附加译文明确禁止未经授权转载。原书、提取文字均仅私下研究,不部署;课程采用原创规则接口示例并链接出版社可读条目。
能下载不等于已经读完;试读章节不等于全书。这里的原创笔记不是原书全文、译本或逐章替代品。
相关基础知识
相关主题链接用于补充背景,不表示这些既有文章已经按整本书核查。