第1部分 C++语言 1
第1章 C++程序设计概述 3
1.1 C++简史 3
1.2 C++介绍 4
1.2.1 核心C++语言 4
1.2.1.1 函数 4
1.2.1.2 类 6
1.2.1.3 main函数 6
1.2.1.4 剖析函数 7
1.2.1.5 语句 7
1.2.1.6 程序流控制 10
1.2.1.7 异常处理 10
1.2.1.8 模板机制 10
1.2.1.9 名字空间 10
1.2.1.10 声明次序 10
1.2.2 标准C++库 11
1.2.3 源代码文件 12
1.3 小结 12
第2章 编写简单的C++程序 13
2.1 第一个程序 13
2.1.1 #include指令 13
2.1.2 空白 14
2.1.3 main函数声明 14
2.1.4 main函数语句块 14
2.1.5 源代码注释 15
2.1.6 向控制台写入信息 15
2.1.7 return语句 15
2.1.8 终止语句块 16
2.2 标识符 16
2.3 关键字 16
2.4 标准输出流 17
2.5 变量 18
2.5.1 布尔型 18
2.5.2 字符型 19
2.5.3 wchar_t型 20
2.5.4 整型 21
2.5.5 浮点数 22
2.6 常量 22
2.6.1 字符常量 23
2.6.2 转义序列 23
2.6.3 整数常量 24
2.6.4 浮点常量 24
2.6.5 地址常量 25
2.6.6 字符串常量 25
2.7 表达式 26
2.8 赋值 26
2.9 以逗号分隔的声明 27
2.10 表达式中的运算符 28
2.10.1 算术运算符 28
2.10.2 逻辑运算符 29
2.10.3 位逻辑运算符 30
2.10.4 移位运算符 31
2.10.5 关系运算符 32
2.10.6 增量运算符和减量运算符 33
2.10.7 赋值运算符 34
2.10.8 复合赋值运算符 35
2.10.9 条件运算符 36
2.10.10 逗号运算符 38
2.11 结合性和优先级 38
2.11.1 结合性 39
2.11.2 优先级 40
2.12 表达式何时不被求值 40
2.13 初始式 41
2.14 类型转换 42
2.15 控制台输入/输出 43
2.15.1 标准输出流 43
2.15.2 格式化输出 44
2.15.3 标准错误流 45
2.15.4 标准输入流 45
2.16 一个问题 46
2.17 小结 46
第3章 函数 47
3.1 再论main函数 48
3.2 实参与形参 48
3.3 用原型声明函数 49
3.3.1 未命名的形参类型 49
3.3.2 典型的原型 49
3.3.3 返回void的函数 49
3.3.4 没有形参的函数 50
3.3.5 形参表可变的函数 50
3.3.6 不返回值且没有形参的函数 50
3.3.7 标准库原型 50
3.3.8 没有原型的函数 50
3.4 定义和调用函数 51
3.5 函数返回 51
3.6 函数返回值 53
3.7 实参的传递和使用 53
3.7.1 标识符作用域 54
3.7.2 利用函数调用实现初始化 55
3.7.3 初始式的执行顺序 55
3.7.4 传递多个实参 55
3.7.5 用做实参的函数调用 56
3.7.6 值传递 56
3.7.7 实参和返回值的类型转换 56
3.8 未命名的函数形参 56
3.9 默认函数实参 57
3.10 内联函数 58
3.11 递归 59
3.12 函数重载 59
3.12.1 不同操作的重载 59
3.12.2 不同格式的重载 60
3.13 小结 61
第4章 程序流程控制 63
4.1 语句块 63
4.1.1 嵌套深度 63
4.1.2 缩进风格 64
4.2 条件测试 65
4.2.1 if语句 65
4.2.2 if...else语句 67
4.2.3 else if语句 68
4.2.4 switch...case语句 69
4.2.5 if条件表达式内的声明 70
4.3 循环迭代 70
4.3.1 while语句 71
4.3.2 do...while语句 72
4.3.3 复合条件运算符 73
4.3.4 for语句 74
4.3.5 for条件表达式中的声明 75
4.4 循环控制 75
4.4.1 break语句 75
4.4.2 continue语句 76
4.5 跳转语句 77
4.5.1 goto的非法使用 77
4.5.2 C++的goto与C的goto 78
4.5.3 修改非法goto 78
4.5.4 使用goto的争议 79
4.6 小结 80
第5章 C++数据类型结构 81
5.1 作用域 81
5.1.1 全局作用域 81
5.1.2 局部作用域 82
5.1.3 全局作用域解析运算符 83
5.1.4 文件作用域 84
5.1.5 作用域、可见性和生存期 85
5.2 存储类 86
5.2.1 auto存储类 86
5.2.2 static存储类 86
5.2.3 extern存储类 87
5.2.4 register存储类 89
5.3 初始默认值 89
5.4 类型限定词 89
5.4.1 const类型限定词 90
5.4.2 volatile类型限定词 90
5.5 程序存储器体系结构 91
5.5.1 外部变量存储器和静态变量存储器 92
5.5.2 堆 92
5.5.3 栈 92
5.6 小结 93
第6章 结构和联合 95
6.1 结构 95
6.1.1 声明结构 96
6.1.2 定义结构变量 96
6.1.3 引用struct成员 97
6.1.4 初始化结构 97
6.1.5 结构的内部结构 98
6.1.6 结构与函数 98
6.2 联合 99
6.2.1 初始化联合 100
6.2.2 匿名联合 101
6.3 面向对象程序设计浅析 102
6.3.1 数据类型的特征 102
6.3.2 定义数据类型 103
6.3.2.1 何谓抽象 103
6.3.2.2 何谓对象 103
6.3.2.3 数据抽象和过程化程序设计 103
6.3.2.4 数据抽象和封装 104
6.3.3 包含函数的结构 105
6.3.3.1 给结构增加函数 105
6.3.3.2 同一结构的多个实例 106
6.3.3.3 函数名相同的结构 107
6.3.4 访问描述符 108
6.3.5 是否应该使用过程化程序设计 108
6.4 类 109
6.4.1 类与结构 109
6.4.2 C++联合 110
6.5 小结 110
第7章 C++数据进阶 111
7.1 枚举常量 111
7.2 类型强制转换 112
7.2.1 C类型强制转换 113
7.2.2 C++类型强制转换 113
7.3 数组 113
7.3.1 声明数组 114
7.3.2 用下标访问数组 114
7.3.3 初始化数组 114
7.3.4 结构数组 115
7.3.5 多维数组 116
7.3.6 字符数组 117
7.4 sizeof运算符 118
7.5 typedef描述符 120
7.6 小结 121
第8章 指针、地址和动态存储器 123
8.1 指针和地址 123
8.1.1 指向内部类型的指针 124
8.1.2 指针的算术运算 125
8.1.3 指针和数组 127
8.1.4 指向结构的指针 129
8.1.5 指针和地址作为函数实参 130
8.1.6 从函数返回地址 132
8.1.7 指向函数的指针 134
8.1.8 指向指针的指针 136
8.1.9 指向指针数组的指针 138
8.1.10 指向const变量的指针 138
8.1.11 const指针变量 139
8.1.12 void指针 140
8.2 堆的动态存储器分配 141
8.2.1 new和delete运算符 142
8.2.2 分配固定维数的数组 142
8.2.3 分配动态数组 143
8.2.4 处理堆耗尽 144
8.3 小结 144
第9章 引用变量 145
9.1 引用即别名 146
9.2 引用初始化 147
9.3 简化复杂表示法的引用 147
9.4 引用做函数形参 148
9.5 引用调用 150
9.6 const型引用形参 151
9.7 返回引用 151
9.8 const型返回引用 152
9.9 返回对自动变量的引用 152
9.10 指针与引用 153
9.11 小结 153
第10章 递归 155
10.1 递归函数 155
10.2 简单递归举例 156
10.3 递归下降计算器 157
10.4 递归的取舍 160
10.5 小结 160
第11章 预处理器 161
11.1 预处理指令 161
11.2 包含文件 162
11.3 宏 163
11.3.1 #define指令 163
11.3.2 带实参的#define 164
11.3.3 表示法和对齐 169
11.3.4 “#”串化运算符 169
11.3.5 “##”运算符 169
11.3.6 #undef指令 170
11.4 编译期条件指令 170
11.4.1 #if指令 171
11.4.2 #endif指令 171
11.4.3 #if defined指令 171
11.4.4 #ifdef和#ifndef指令 172
11.4.5 #else指令 172
11.4.6 #elif指令 172
11.4.7 #error指令 173
11.5 其他标准指令 174
11.5.1 #line指令 174
11.5.2 #pragma指令 174
11.6 深入#include指令 174
11.7 小结 174
第12章 函数模板 175
12.1 函数模板基础 175
12.2 函数模板专门化 177
12.3 用模板排序 179
12.4 小结 181
第13章 程序组织结构 183
13.1 程序的组成 183
13.1.1 源代码文件 183
13.1.2 翻译单元 184
13.1.3 目标模块 185
13.1.4 目标库 185
13.1.5 共享目标库或动态链接库 185
13.1.6 可执行文件 186
13.1.7 集成开发环境 186
13.2 安全类型链接 187
13.3 链接说明 188
13.4 argc和argv命令行实参 191
13.4.1 命令行通配符扩展 193
13.4.2 命令行实参约定 193
13.5 标准输入/输出重定向 194
13.5.1 重定向到文件 194
13.5.2 管道和过滤器 195
13.6 打印报告 196
13.6.1 用输出重定向打印 197
13.6.2 打印到文件 197
13.6.3 打印到打印机设备 197
13.7 小结 198
第2部分 使用类 199
第14章 C++类 201
14.1 类声明 201
14.2 类成员 202
14.3 访问说明符:类成员的可见性 202
14.4 结构和类的对比 203
14.5 数据成员 203
14.6 初始化 204
14.7 成员函数 204
14.8 面向对象类的设计 205
14.9 类对象的作用域和生存期 205
14.10 内联函数 206
14.11 小结 207
第15章 构造函数和析构函数 209
15.1 构造函数 209
15.1.1 构造函数的运行 209
15.1.1.1 对象存储器 210
15.1.1.2 对象初始化 210
15.1.1.3 没有参数的构造函数 211
15.1.2 使用默认参数的构造函数 211
15.1.3 默认构造函数 212
15.1.4 重载构造函数 212
15.1.5 复制构造函数 214
15.1.6 构造函数的形参初始化列表 216
15.2 析构函数 217
15.3 小结 219
第16章 转换 221
16.1 类转换 221
16.2 转换函数 221
16.2.1 转换构造函数 221
16.2.2 成员转换函数 223
16.3 转换类对象 224
16.4 调用转换函数 226
16.5 发生转换的上下文 227
16.6 显式构造函数 229
16.7 表达式内部的转换 230
16.8 小结 231
第17章 类对象数组 233
17.1 数组中的类对象 233
17.2 类对象数组和默认构造函数 234
17.3 类对象数组和析构函数 235
17.4 小结 236
第18章 类成员 237
18.1 this指针 237
18.2 操纵私用数据成员 239
18.2.1 getter和setter成员函数 240
18.2.2 const成员函数 241
18.2.3 改进的成员转换函数 241
18.3 static成员 243
18.3.1 static数据成员 243
18.3.2 static成员函数 244
18.3.3 引用指针 246
18.3.4 公用static成员 246
18.4 小议const 246
18.5 mutable数据成员 248
18.6 引用数据成员 249
18.7 小结 251
第19章 友元 253
19.1 友元类 253
19.2 隐含构造 254
19.3 前向引用 255
19.4 显式友元前向引用 255
19.5 友元函数 256
19.6 非成员友元函数 256
19.7 小结 258
第20章 类和堆 259
20.1 构造函数和new,析构函数和delete 259
20.2 堆和类数组 260
20.3 重载类的new和delete运算符 261
20.4 测试异常 263
20.5 重载new和delete异常 264
20.6 重载类的new数组和delete数组 264
20.7 小结 266
第21章 重载运算符 267
21.1 重载与否 267
21.2 重载运算符的情况 268
21.3 重载运算符的规则 269
21.4 重载赋值运算符 270
21.4.1 声明重载赋值运算符operator= 270
21.4.2 定义重载赋值运算符operator= 271
21.4.3 返回*this 271
21.4.4 简单的重载赋值运算符函数 272
21.4.5 重载赋值的原因 273
21.5 二元算术运算符 276
21.5.1 类成员运算符函数 276
21.5.2 非成员运算符函数 278
21.6 关系运算符 281
21.7 其他赋值运算符 283
21.8 自动增量和自动减量 284
21.9 一元加、减运算符 286
21.10 下标运算符 287
21.11 成员指针运算符 288
21.12 小结 290
第22章 类库 291
22.1 对象与目标 291
22.2 组织和构建对象库 292
22.2.1 头文件和对象模块文件 292
22.2.2 库的文件名 293
22.2.3 库的兼容性 293
22.2.4 类和函数库 294
22.2.5 模板库 294
22.3 链接对象库 294
22.4 对象库的种类 295
22.4.1 通用库 295
22.4.2 通用数据类型库 295
22.4.2.1 Date类 295
22.4.2.2 SSN和MONEY数据抽象 297
22.4.3 问题域库 297
22.4.4 应用框架 298
22.5 库头文件 298
22.6 类模板库 298
22.7 小结 298
第23章 类的继承 299
23.1 类继承 299
23.2 专门化的数据抽象类设计 302
23.2.1 基类 303
23.2.2 高效率设计 303
23.2.3 单重继承 304
23.2.4 派生类 304
23.2.5 受保护成员 305
23.2.6 派生和专用成员 305
23.2.7 公用基类和私用基类 305
23.2.8 基类和派生类中的构造函数 306
23.2.9 新成员函数的专门化 306
23.2.10 通过覆盖基类成员函数实现专门化 307
23.2.11 生成程序 307
23.2.12 基类和派生类的作用域解析运算符 308
23.2.13 多个派生类 309
23.2.14 第2个派生类 309
23.2.15 使用基类和两个派生类 311
23.2.16 派生类之间没有关联 311
23.2.17 派生基类的派生类 312
23.3 问题域类层次结构的设计 315
23.3.1 C++与纯粹的面向对象设计 315
23.3.2 更多的数据抽象 316
23.3.3 标准C++字符串类 317
23.4 Person:基类 317
23.4.1 类中的枚举 318
23.4.2 基类中的虚函数 318
23.4.3 抽象基类:纯虚函数 318
23.4.4 两种显示方法 319
23.5 派生类 319
23.5.1 Employee类 319
23.5.2 覆盖一个函数覆盖 319
23.5.3 WageEmployee类 320
23.5.4 SalariedEmployee类 320
23.5.5 Contractor类 321
23.6 建立对象库 321
23.7 使用问题域类层次结构 322
23.8 虚函数 324
23.8.1 通过引用调用虚函数 324
23.8.2 覆盖虚函数的覆盖 325
23.9 虚析构函数 325
23.10 多态 327
23.11 小结 328
第24章 多重继承 329
24.1 多个基类 329
24.1.1 多重继承时构造函数的运行 330
24.1.2 多重继承时析构函数的运行 331
24.2 完善财产系统的设计 331
24.3 用多重继承覆盖成员 332
24.4 多重继承的歧义 333
24.4.1 歧义成员函数 333
24.4.2 歧义数据成员 333
24.4.3 在设计中解决歧义 334
24.4.4 不可避免的歧义 335
24.5 虚基类 335
24.6 实现设计 336
24.6.1 DisplayObject类 336
24.6.2 Vehicle类 337
24.6.3 Property类 338
24.6.4 Asset和Expense类 339
24.6.5 Compute和Pencils类 340
24.6.6 CompanyCar和LeaseCar类 340
24.6.7 应用程序 340
24.7 练习 341
24.8 小结 341
第25章 类模板 343
25.1 类模板的基础知识 343
25.2 声明多个类模板对象 344
25.3 调用类模板成员函数 345
25.4 声明多个形参 345
25.5 重载运算符模板函数 346
25.6 默认实参值 347
25.7 有界数组的类模板 348
25.8 何时使用类模板 350
25.9 模板的专门化 351
25.9.1 类模板的专门化 351
25.9.2 模板成员函数的专门化 352
25.9.3 部分模板的专门化 353
25.10 默认类型的形参 354
25.11 关键字typename 355
25.11.1 typename消除模板的歧义 355
25.11.2 typename与class 358
25.12 类模板和抽象 359
25.13 小结 360
第3部分 使用类 361
第26章 标准C库函数 363
26.1 <cassert>头文件 364
26.2 <cctype>头文件 365
26.3 <cerrno>头文件 366
26.4 <cmath>头文件 367
26.5 <csetjmp>头文件 367
26.6 <cstdarg>头文件 369
26.7 <cstdio>头文件 370
26.7.1 全局符号 371
26.7.2 控制台函数 371
26.7.2.1 格式化字符串和记号 371
26.7.2.2 std∷printf函数 373
26.7.2.3 std∷scanf函数 373
26.7.2.4 std∷sprintf和std∷sscanf函数 374
26.7.2.5 std∷fprintf和std∷fscanf函数 374
26.7.2.6 std∷getchar和std∷putchar函数 374
26.8 <cstdlib>头文件 375
26.8.1 数值函数 375
26.8.2 内存分配函数 375
26.8.3 系统函数 376
26.8.4 随机数产生函数 376
26.9 <cstring>头文件 377
26.10 <ctime>头文件 379
26.11 小结 380
第27章 标准C++库 381
27.1 字符串和IOStream模扳 381
27.2 std∷string类 381
27.2.1 字符串构造 381
27.2.2 字符串赋值 382
27.2.3 字符串拼接 382
27.2.4 字符串下标 382
27.2.5 字符串比较 382
27.2.6 子字符串 383
27.2.7 查找字符串 383
27.2.8 字符串运算 383
27.3 IOStream类 385
27.3.1 std∷ios类 385
27.3.2 std∷ostream类 386
27.3.3 std∷istream类 386
27.3.4 缓冲输出 386
27.3.5 输出成员函数 387
27.3.6 输入成员函数 388
27.4 std∷complex类 390
27.5 小结 391
第28章 格式化IOStream和stringstream类 393
28.1 IOStream 393
28.2 格式化输出 393
28.3 操纵符、标记和成员函数 394
28.3.1 ios∷width函数 394
28.3.2 std∷setw操纵符 395
28.3.3 std∷ios∷fill函数 396
28.3.4 输出对齐 396
28.3.5 setprecision操纵符 397
28.3.6 科学表示法和定点表示法 398
28.3.7 std∷ios∷setf函数和std∷ios∷unsetf函数 399
28.3.8 格式化标记 400
28.3.9 格式化操纵符 401
28.3.10 格式化函数 401
28.4 std∷stringstream类 402
28.4.1 std∷istringstream类 402
28.4.2 std∷ostringstream类 403
28.4.3 std∷stringstream类 403
28.5 小结 404
第29章 文件I/O流 405
29.1 文件流对象 405
29.2 打开模式 406
29.2.1 默认打开模式 406
29.2.2 有效的打开模式组合 407
29.2.3 常见的打开情况 407
29.3 二进制和文本文件流 408
29.4 std∷ofstream类 409
29.4.1 创建文件 409
29.4.2 追加到现有文件 410
29.5 文件流成员函数 411
29.5.1 write成员函数 411
29.5.2 其他成员函数:open,put,tellp和close 413
29.6 std∷ifstream类 414
29.7 读到文件尾 414
29.8 在文件中查找 415
29.9 读/写流文件的std∷fstream类 417
29.10 文件和流的关联和分离 418
29.11 输入/输出的变化 418
29.12 测试错误 420
29.13 删除文件 421
29.14 小结 422
第4部分 标准模板库 423
第30章 STL简介 425
30.1 为什么需要STL 425
30.2 STL编程模型 426
30.3 序列 426
30.4 容器适配器 426
30.5 结合容器 427
30.6 迭代器 427
30.7 算法 428
30.8 谓词 429
30.9 分配器 429
30.10 小结 429
第31章 STL序列容器 431
31.1 序列容器 431
31.2 vector类模板 432
31.2.1 插入和访问向量元素 433
31.2.2 删除向量元素 434
31.2.3 向量的比较 436
31.2.4 vector成员函数 437
31.3 deque类模板 438
31.3.1 插入和访问双端队列元素 439
31.3.2 删除双端队列元素 441
31.3.3 双端队列的比较 442
31.3.4 deque成员函数 443
31.4 链表类模板 444
31.4.1 插入链表元素 445
31.4.2 删除链表元素 447
31.4.3 链表的比较 448
31.4.4 list成员函数 449
31.5 std∷stack容器适配器 450
31.6 std∷queue容器适配器 452
31.7 std∷priority_queue容器适配器 453
31.8 小结 454
第32章 结合容器 455
32.1 结合容器 455
32.2 std∷set类模板 455
32.2.1 插入集合元素 457
32.2.2 删除集合元素 457
32.2.3 查找集合元素 458
32.2.4 集合的比较 459
32.2.5 set成员函数 461
32.3 std∷multiset类模板 461
32.3.1 插入multiset元素 463
32.3.2 删除multiset元素 464
32.3.3 查找multiset元素 465
32.3.4 比较multiset对象 466
32.3.5 multiset成员函数 467
32.4 std∷map类模板 468
32.4.1 在map中插入元素 470
32.4.2 删除map元素 471
32.4.3 查找map元素 472
32.4.4 比较map对象 473
32.4.5 map成员函数 475
32.5 std∷multimap类模板 476
32.5.1 在multimap中插入元素 477
32.5.2 删除multimap元素 477
32.5.3 查找multimap元素 479
32.5.4 比较multimap对象 480
32.5.5 multimap成员函数 481
32.6 std∷bitset类模板 482
32.6.1 操作bitset中的位 483
32.6.2 测试bitset中的位 484
32.6.3 比较bitset对象 485
32.6.4 bitset成员函数 486
32.7 用户自定义谓词 487
32.8 小结 489
第33章 通用算法 491
33.1 通用算法简介 491
33.2 非修改算法 492
33.3 变异算法 495
33.4 排序算法 499
33.5 数值算法 507
33.6 小结 511
第34章 迭代器 513
34.1 迭代器简介 513
34.2 输入迭代器 514
34.3 输出迭代器 515
34.4 前向迭代器 516
34.5 双向迭代器 517
34.6 随机访问迭代器 518
34.7 特殊用途迭代器 520
3.7.1 流迭代器 520
34.7.1.1 输入流迭代器 520
34.7.1.2 输出流迭代器 521
34.7.2 迭代器适配器 523
34.7.2.1 反向迭代器 523
34.7.2.2 插入迭代器 524
34.8 小结 526
第5部分 高级问题 527
第35章 异常处理 529
35.1 C的异常处理 529
35.2 C++的异常处理 531
35.2.1 try块 531
35.2.2 catch异常处理函数 532
35.2.3 throw语句 532
35.2.4 try/throw/catch序列 532
35.3 全数捕捉异常处理函数 536
35.4 从处理函数中抛出异常 537
35.5 未捕捉的异常 538
35.6 在多个抛出的异常中选择 540
35.7 异常和未释放的资源 541
35.8 改进的计算器程序 542
35.9 标准异常 544
35.10 std∷exception∷what成员函数 547
35.11 异常说明 547
35.12 未预料到的异常 548
35.13 小结 548
第36章 名字空间 549
36.1 名字空间的问题 549
36.2 名字空间简介 550
36.3 引用名字空间的成员 550
36.4 using namespace语句 551
36.5 定义名字空间 552
36.6 嵌套的名字空间 553
36.7 未命名的名字空间 554
36.8 名字空间的别名 554
36.9 Koenig查找 555
36.10 小结 557
第37章 C++类型强制转换 559
37.1 C++类型强制转换 559
37.2 dynamic_cast运算符 559
37.2.1 向下强制转换指针 560
37.2.2 向下强制转换引用 561
37.2.3 向上强制 562
37.3 static_cast运算符 562
37.4 reinterpret_cast运算符 564
37.5 const_cast运算符 564
37.6 小结 566
第38章 运行时类型信息 567
38.1 typeid运算符 567
38.2 type_info类 568
38.2.1 constchar*type_info∷name() 568
38.2.2 bool type_info∷before(const type_info&rhs) 568
38.3 用RTTI编程 568
38.4 RTTI的用法 570
38.5 小结 571
第39章 区域表示 573
39.1 国际化元素 573
39.2 std∷locale类 574
39.2.1 标准刻面 574
39.2.2 默认和全局的区域表示 575
39.3 创建区域表示对象 575
39.4 创建混合的区域表示 578
39.5 流和区域表示 579
39.6 处理刻面 580
39.7 小结 581
第40章 面向对象程序设计 583
40.1 对象和C++程序员 583
40.2 基础知识 584
40.3 过程化程序设计 584
40.4 面向对象程序设计 584
40.4.1 面向对象的程序 585
40.4.2 对象 586
40.4.3 抽象 586
40.4.4 封装 587
40.4.5 方法和消息 588
40.4.5.1 函数方法 589
40.4.5.2 数据类型方法 589
40.4.5.3 隐式转换方法 590
40.4.5.4 成员函数 590
40.4.6 继承 590
40.4.6.1 单重继承 591
40.4.6.2 多重继承 591
40.4.7 类的关系 591
40.4.8 多态 592
40.5 小结 592
附录A 库清单 593
附录B 光盘内容 605
附录C Quincy 2002用户指南 607
附录D C++对照表 613
附录E 参考书目 619
词汇表 621