概述 1
本书阅读指南 6
第1章 面向对象设计和编程 7
1.1 C程序设计中的问题 7
1.2 解决方案:面向对象程序设计 7
1.3 面向对象方法的关键概念 8
1.3.1 域或问题域或系统 8
1.3.2 对象 9
1.3.3 类 9
1.3.4 消息和方法 9
1.3.5 继承 9
1.3.6 多重继承 10
1.3.7 类成分或层 11
1.3.8 多态性 11
1.4 面向对象分析和设计的步骤 12
1.5 CRC卡(类、职责、合作者)——类设计的方法 13
1.6 面向对象方法——分而治之 14
1.6.1 设计开发人员的作用 14
1.6.2 C应用程序编写者的作用 15
1.7 从传统设计文档到面向对象设计 15
1.8 面向对象设计术语与C术语 16
第2章 C的基本特性 17
2.1 ANSI C和C的共性 17
2.2 C语言的设计目标 18
2.3 注释 18
2.4 标识符 19
2.5 “单名空间” 19
2.6 常量 20
2.7 关键字 20
2.8 void 20
2.8.3 void指针 21
2.8.2 void实参 21
2.8.1 void函数 21
2.9 声明出现的位置 22
2.10 const 22
2.11 枚举 24
2.12 函数原型和定义 25
2.13 内联函数 26
2.14 函数调用中的默认实参 27
2.15 重载函数 28
2.16 重载函数的选择规则 29
2.17 建立重载函数族系的策略 30
2.18 函数名换名 30
2.19 引用变量 30
2.20 引用传递 31
2.21 返回引用的函数 34
2.22 终端I/O:CIN,COUT,CERR,格式化输出,CIN.GETLINE 35
2.22.2 利用getline()读取字符串 38
2.22.1 格式化输出 38
2.23 动态存储分配 39
2.24 练习 42
第3章 类 43
3.1 类的定义 43
3.2 私有意味着什么? 45
3.3 类成员 45
3.4 类中数据的类型 46
3.5 定义对象(变量) 47
3.6 公有类成员初始化 49
3.7 一个对象由另一个对象初始化 50
3.8 对象的内存布局 51
3.9 使用类成员 51
3.10 类成员函数 53
3.11 作用域运算符 54
3.12 CONST成员函数 55
3.13 综合示例 56
3.14 对成员函数的注释 57
3.15 程序文件的组成 58
3.16 指向对象的指针 58
3.17 指向成员函数的指针 59
3.17.1 指向成员函数指针的示例 60
3.17.2 上面示例的更紧凑形式 61
3.18 指针和动态分配的对象 63
3.19 在函数调用中按值传递对象 64
3.20 在函数调用中引用传递对象 65
3.21 嵌套类定义 66
3.22 类成员对象:分层类——成分 67
3.23 类成员指针和引用对象 67
3.24 静态成员变量和函数 68
3.24.1 静态成员变量 69
3.24.2 静态成员函数 70
3.25 结构与联合 73
3.26 练习 75
第4章 构造函数和析构函数 76
4.1 定义构造函数 76
4.2 构造函数在创建对象中的作用 79
4.3 定义对象的语句格式 80
4.3.1 无实参构造函数——默认构造函数 80
4.3.2 单实参构造函数 80
4.3.3 多实参构造函数 82
4.4 构造函数和动态对象 82
4.5 构造函数和对象数组 83
4.6 构造函数和动态对象数组 85
4.7 针对分层(成分)类的构造函数 87
4.8 对常量和引用成员变量初始化 89
4.9 带对象参数的构造函数 90
4.10 拷贝构造函数 91
4.11 带动态存储分配的构造函数 94
4.12 定义析构函数 96
4.13 何时运行构造函数和析构函数? 99
4.13.1 跟踪构造函数/析构函数执行过程 99
4.13.2 构造函数、析构函数和函数调用 101
4.14 练习 102
第5章 友元函数和友元类 104
5.1 友元函数示例 105
5.2 友元类 109
5.3 练习 111
第6章 重载运算符 112
6.1 运算符重载的规则和特点 112
6.2 运算符重载是函数 113
6.3 成员、友元和非友元重载 114
6.3.1 成员运算符重载 114
6.3.2 非成员运算符重载 114
6.3.3 友元运算符重载 114
6.4 非成员运算符重载 115
6.5 非成员运算符重载是伪函数 119
6.6 友元运算符重载 119
6.7 指针“this” 121
6.8 运算符重载的种类 123
6.9 成员运算符重载 123
6.10 建立运算符重载的策略 125
6.11 成员运算符重载是伪成员函数 126
6.12 运算符和--的重载 126
6.13 =运算符重载和动态存储分配 132
6.14 []运算符重载 134
6.15 练习 137
第7章 C数据类型转换 138
7.1 隐式数据类型转换 138
7.2 构造函数和类型转换 139
7.3 赋值运算符和类型转换 141
7.4 重载类型强制运算符 144
7.5 混合数据类型表达式中的类型转换 146
7.6 字符串表达式中对象的类型强制 147
7.7 类型转换和运算符重载参数 149
7.8 函数调用中实参的类型转换 150
7.9 类型转换和函数返回 151
7.10 练习 152
第8章 C终端和文件I/O 153
8.1 终端I/O 153
8.2 输出流显示格式 155
8.3 I/O前导文件——IOSTREAM.H和FSTREAM.H 157
8.4 打开和关闭文件 157
8.5 读写基本数据 160
8.6 使用<<和>>重载读写对象 162
8.7 测试I/O状态 166
8.8 随机访问 167
8.9 二进制文件 170
8.10 操作函数简介 171
8.11 定义操作函数 172
8.12 练习 173
第9章 类的派生和类的级别 174
9.1 类的保护区 177
9.2 公有的、私有的和保护的基类 178
9.3 多级层次结构的私有规则 189
9.4 多重继承 194
9.5 派生类构造函数 194
9.6 派生类析构函数 197
9.7 构造函数和析构函数的调用次序 199
9.8 派生类和基类的函数调用 201
9.9 虚基类 203
9.10 练习 209
第10章 虚函数和多态性 210
10.1 指向基类对象的指针及其引用 210
10.2 基类与派生类间的类型转换规则 212
10.3 函数层次结构 213
10.4 虚函数层次结构 215
10.5 虚函数机制 216
10.6 多态性 219
10.7 多重虚函数层次结构 224
10.8 纯虚函数和抽象类 225
10.9 练习 227
第11章 模板 229
11.1 模板函数 229
11.2 模板函数参数必须依赖于元素类型 231
11.3 有多个元素类型的模板函数 231
11.4 模板函数与重载函数族系 232
11.5 利用模板生成函数定义 234
11.6 模板类 234
11.8 练习 237
11.7 各种模板类元素类型 237
第12章 异常处理 238
12.1 尝试、捕捉和投掷异常 238
12.2 投掷和捕捉 238
12.3 有关异常的规则 241
12.4 多路捕捉 242
12.5 关于异常处理程序列表的规则 244
12.6 关于匹配处理程序数据类型的规则 245
12.7 在函数原型中投掷规格说明 246
12.8 解释处理程序机制的示意图 246
12.9 异常成组 247
12.10 构造函数错误和异常 249
12.11 练习 250
第13章 将应用程序移植到C 251
13.1 把前ANSI C转换到ANSI C 251
13.2 由C移植到C的步骤 252
14.1 虚函数返回值 256
第14章 C新特性 256
14.2 MUTABLE关键字 257
14.3 布尔数据类型 258
14.4 对程序中数据类型的处理以及typeid() 259
14.5 名空间和USING声明 261
14.6 新的类型强制格式和RTTI(运行时类型信息) 270
第15章 链接表及其他应用程序 277
15.1 有关重载运算符[] 277
15.2 链接表 279
15.3 异构链接表 283
15.4 MS-DOS随机磁盘映射 289
第16章 面向对象进程间通信(IPCs) 292
16.1 内存映射 292
16.2 共享内存 295
16.3 文件加锁 299
16.4 信号量 302
16.5 用信号量同步共享内存 305
16.6 消息队列 309
16.7 用SOCKETS实现进程间网络通信 314
第17章 标准模板库(STL) 322
17.1 STL的一般结构 322
17.1.1 包容 322
17.1.2 迭代量 322
17.1.3 算法 323
17.2 使用STL的策略 324
17.3 STL和基本数据类型 324
17.3.1 算法与基本数据类型 324
17.3.2 I/O迭代量和基本数据类型 327
17.4 迭代量的一般特性 328
17.5 顺序包容类 328
17.5.1 vector包容类 329
17.6 包容适配器 330
17.5.3 deque包容类 330
17.5.2 list包容类 330
17.7 相关包容类 331
17.8 使用带包容的迭代量和算法 332
附录A C语言速成 336
A.1 简单变量 336
A.2 注释 338
A.3 常量 338
A.3.1 int型常量 338
A.3.2 long int型常量 339
A.3.3 char型常量 339
A.3.4 字符串常量 340
A.3.5 浮点常量 340
A.4 运算符 340
A.5 函数 343
A.6 IF结构、循环结构和SWITCH结构 345
A.7 程序结构和变量存储级 348
A.8 指针 350
A.9 数组 351
A.10 结构 354
A.11 终端输入和输出 356
附录B 练习解答 359
第2章 练习解答 359
第3章 练习解答 362
第4章 练习解答 364
第5章 练习解答 368
第6章 练习解答 370
第7章 练习解答 375
第8章 练习解答 380
第9章 练习解答 384
第10章 练习解答 387
第11章 练习解答 391
第12章 练习解答 393
参考文献 398