目录 1
第一章 简介 1
1.1 C++:一门发展中的语言 1
1.2 借助惯用法处理复杂性 2
1.3 九十年代的对象 3
1.4 设计与语言 3
第二章 数据抽象和抽象数据类型 5
2.1 类 6
2.2 对象反演 8
2.3 构造函数(constructor)和析构函数(destructor) 10
2.4 内联函数 13
2.6 静态成员函数 15
2.5 静态数据成员的初始化 15
2.7 作用域和常量 16
2.8 全程对象、常量和静态类成员的初始化顺序 17
2.9 类对象成员函数的const增强 18
2.10 指向成员函数的指针 20
2.11 程序结构转换 24
第三章 具体数据类型 26
3.1 类范式 26
3.2 作用域和访问权的控制 31
3.3 重载:重新定义操作符和函数的语义 33
3.4 类型转换 37
3.5 引用计数:让变量使用虚幻内存 40
3.6 操作符new和delete 51
3.7 初始化与实例化相分离 56
第四章 继承性 61
4.1 简单的继承性 62
4.2 作用域与访问控制 67
4.3 构造函数与析构函数 75
4.4 class指针转换 77
4.5 类型选择域 79
第五章 面向对象的程序设计 83
5.1 C++运行时刻的类型支持:虚函数 84
5.2 析构函数的交互和虚析构函数 90
5.3 虚函数和作用域 90
5.4 纯虚函数和抽象基类 92
5.5 信封和信件类 94
5.6 算子:函数作为对象 118
5.7 多重继承性 128
5.8 继承性范式 135
第六章 面向对象的设计 143
6.1 类型和类 144
6.2 面向对象的设计步骤 146
6.3 面向对象分析和域分析 149
6.4 对象和类的关系 151
6.5 子类型、继承和提交 158
6.6 用于子类型、继承和独立性的经验法则 173
第七章 重用和对象 175
7.1 所有类似物在某处的分解 176
7.2 设计重用 177
7.3 四种代码重用机制 178
7.4 参数化类型或样本 180
7.5 私有继承:支持重用吗? 186
7.6 存储重用 189
7.7 接口复用:变形 190
7.8 重用,继承和提交 191
7.9 源代码重用的建设性选择 191
7.10 重用和对象的总结 194
第八章 C++的样本程序设计 196
8.1 实例:雇员样本 198
8.2 样本和通用构造函数:样本群体惯用法 202
8.3 独立的通用构造函数 203
8.4 抽象基样本 205
8.5 框架样本惯用法 207
8.6 关于标记 208
8.7 样本与程序管理 210
第九章 用C++模拟符号风格 216
9.1 增量C++开发 217
9.2 符号范式 218
9.3 实例:一个通用的聚集类 227
9.4 支持增量装载的代码和惯用法 230
9.5 无用单元的收集 238
9.6 基本类型的封装性 244
9.7 符号惯用法指导下的多方法(multi-method) 245
第十章 动态的多重继承性 250
10.1 实例:一个多功能的窗口系统 251
10.2 动态多重继承性的局限性 253
11.1 静态的系统设计 255
第十一章 系统的设计问题 255
11.2 动态的系统设计 261
附录A C++环境下的C 272
A.1 函数调用 272
A.2 函数的参数 272
A.3 函数原型 273
A.4 引用参数 274
A.5 可变的参数数目 275
A.6 函数指针 276
A.7 类型修饰符const 277
A.8 与C语言的接口 279
A.8.1 设计方面的考虑 279
A.8.2 语言的连结 282
A.8.3 从C中调用C++ 283
A.8.4 在C和C++间共享头文件 284
A.8.5 C++引进C数据格式 287
A.8.6 C中引进C++数据格式 287
附录B 形体程序的C++代码 290
附录C 引用从操作符返回值 300
附录D 为什么逐位拷贝行不通 302
附录E 符号形体源代码 304
附录F C++程序的结构化设计 332
F.1 什么是结构化程序设计 332
F.2 C++结构化程序设计的基本模块 333
F.3 带深度嵌套作用域模块的一种替换法 335
F.4 实现考虑 339