BOOK / SOURCE & READING RECORD
Inside the C++ Object Model
Stanley B. Lippman
1996 first edition, ISBN 9780201834543; public 2003 HTML-to-PDF reflow has 182 PDF pages, not original print pagination
Inside the C++ Object Model
公开182页重排本的全部7章正文、代码、脚注与表格已逐段读完:第1章PDF12–31,第2章31–54,第3章54–82,第4章82–111,第5章111–137,第6章137–160,第7章160–182;全部17幅编号图(子图分计)已直接查看,包括最后的图4.3/PDF100。full仅指这份文件的全部实质章节,不声称已逐页校勘304页纸本或读到此文件未收录的纸本索引。PDF页码不是印刷页码。
查看版本、实际阅读范围与原文入口 →构造阶段的行为边界,比虚表图更重要
分析构造函数时,最有用的观察不是记住某张虚表有几个槽,而是确认当前已经建立了哪些对象。基类构造过程中不能依赖尚未初始化的派生状态;即使经由辅助成员间接调用虚函数,选择的仍是当前构造阶段对应的最终覆写函数。书中用逐步设置vptr说明一种实现路径,而可移植程序只需要依赖调用语义。现代课程可以记录构造、正常调用和析构三个时刻的返回值来验证边界,不必读写对象内部字节,也不必把cfront的隐藏参数形式当成编译器必须遵守的接口。
阅读定位:Chapter 5 §5.2, The Semantics of the vptr Initialization; reflow PDF pp.124–127
把历史成本模型与现代正确性分开
本书把隐式构造、成员复制、继承布局、虚调用及异常清理还原成实现步骤,适合训练查找隐藏工作的意识,却不能把当年的测量直接升级为今天的性能结论。cfront和SGI上的汇编差异首先是特定实验结果;虚表位置、成员指针表示和数组管理信息不是统一ABI。更重要的是,旧书示例仍需现代规则复核:数组new必须配对数组delete,不能逐个delete数组元素;经普通基类指针删除派生对象需要满足虚析构要求。保留问题意识,而不是把早期代码当成安全模板。
阅读定位:Chapter 5 §§5.4–5.5, reflow PDF pp.131–137; Chapter 6 §6.2, reflow PDF pp.145–154
原文与实际阅读范围
- InformIT first-edition record and preface
核对1996年第1版、目录以及cfront/EDG/SGI的历史实验背景。
Public reflow PDF — privately researched copy
公开182页重排本;全部7章文字、代码、脚注、表格与17幅编号图已读。来源非作者或出版社,转载授权未确认,不在本站托管。
研究副本不在本站公开链接。
正文版权页保留全部权利,公开仓库未证明出版社授权;可公开读取不等于可再次分发。本项目仅发布原创分析与程序,PDF、图像和提取文本只作私有研究证据。
能下载不等于已经读完;试读章节不等于全书。这里的原创笔记不是原书全文、译本或逐章替代品。
相关基础知识
- 构造与析构顺序 Construction order
- 虚表 Vtable:语言语义与 ABI 实现
- 基类析构:public virtual 或 protected nonvirtual
- 静态与动态多态 Polymorphism、切片与 RTTI
相关主题链接用于补充背景,不表示这些既有文章已经按整本书核查。