第一章 引言 1
1.1 C++语言演变的历史 1
1.2 处理复杂结构的习惯用法 2
1.3 对象 3
1.4 设计和语言 4
练习 4
第二章 数据抽象和抽象数据类型 5
2.1 类 6
2.2 对象转换 8
2.3 构造函数和析构函数 10
2.4 内联(inline)函数 14
2.5 静态数据成员的初始化 16
2.6 作用域和const 17
2.7 合局对象、常数和静态类成员初始化次序 18
2.8 类对象成员函数的const执行 19
2.9 指向成员函数的指针 21
2.10 程序组织的习惯约定 25
练习 26
第三章 具体数据类型 28
3.1 传统规范类格式 28
3.2 作用域和访问控制 33
3.3 重载:重定义操作和函数的语义 36
3.4 类型转换 40
3.5 引用计数:使用“可调内存”变量 43
3.6 操作符new和delete 55
3.7 把初始化从实例化中分离出来 61
练习 63
第四章 继承性 66
4.1 简单继承 67
4.2 作用域和访问控制 72
4.3 构造函数和析构函数 82
4.4 类指针转换 84
4.5 类型选择域 89
练习 89
第五章 面向对象程序设计 91
5.1 C++运行时类型支持:虚拟函数 92
5.2 虚拟析构函数 98
5.3 虚拟函数和作用域 98
5.4 纯虚拟函数和抽象基类 101
5.5 信封和信件类 102
5.6 功能元件:作为对象的函数 129
5.7 多重继承 140
5.8 继承的规范格式 148
5.9 例子 152
练习 156
第六章 面向对象设计 158
6.1 类型和类 158
6.2 面向对象设计的实践活动 161
6.3 面向对象分析和领域分析 163
6.4 对象和类的关系 165
6.5 子类型、继承和转发 172
6.6 子类型、继承和独立性的经验规则 187
练习 188
第七章 重用和对象 190
7.1 所有模拟的分解放到何处 191
7.2 设计重用 192
7.3 4种代码重用机制 193
7.4 参数化类型或模板 195
7.5 私有继承:继承支持重用吗? 203
7.6 存储重用 206
7.7 接口重用:变体 206
7.8 重用、继承和转发 207
7.9 源代码重用结构的选择 208
7.10 在重用和对象上的概括 211
练习 212
第八章 C++中的样本程序设计 213
8.1 雇员样本的例子 215
8.2 样本和类属构造函数:样本共用的习惯用法 220
8.3 自主的类属构造函数 221
8.4 抽象基样本 223
8.5 样本习惯用法框架 225
8.6 相关的表示 227
8.7 样本和程序的管理 228
练习 230
第九章 在C++中模拟符号语言的风格 236
9.1 增量式C++开发 237
9.2 符号规范格式 238
9.3 通用收集类的例子 248
9.4 支持增量装入的代码和习惯用法 252
9.5 垃圾收集 261
9.6 基本类型的封装 268
9.7 在符号习惯用法下的多重方法 268
练习 272
第十章 动态多重继承 273
10.1 多重技术窗口系统的例子 274
练习 277
10.2 防止误解的说明 277
第十一章 系统性问题 278
11.1 静态系统设计 278
11.2 动态系统设计 284
练习 295
附录A C++环境中的C 296
A.1 函数调用 296
A.2 函数参数表 297
A.3 函数原型 297
A.4 调用引用参数 298
A.5 参数个数不定 301
A.6 函数指针 303
A.7 const类型说明符 304
A.8.1 设计的考虑 307
A.8 C代码的接口 307
A.8.2 与C语言连接 308
A.8.3 从C调用C++ 309
A.8.4 在C和C++之间共享头文件 310
A.8.5 将C数据输入到C++ 314
A.8.6 将C++数据输入到C 314
A.9 操作符引用返回值 316
练习 318
附录B Shapes程序的C++代码 319
附录C 符号的Shapes 331
附录D C++中块结构程序设计 372
D.1 什么是块结构程序设计 372
D.2 构造基本块结构的C++程序设计 373
D.3 有深度嵌套作用域块的选择 375
D.4 块结构的视频游戏代码 379
参考文献 385