目录 3
译者序 3
前言 3
绪论 3
第一部分 Borland C++入门 3
第一章 Borland C++程序设计环境 3
1.1 Borland C++4的快速浏览 3
1.2 安装Borland C++4 5
1.3 使用BCW集成开发环境 5
1.3.1 BCW入门 6
1.3.2 在BCW中得到帮助 6
1.3.3 使用菜单 8
1.3.4 编辑一个程序 12
1.3.5 编译、连接和运行程序 14
1.3.6 浏览 18
1.3.7 设置编译器选择项 19
1.3.8 调试 19
1.4 使用BCC 21
1.4.1 用BCC编译和连接 22
1.4.2 使用配置文件和响应文件 22
1.4.3 BCC选择项 23
1.5 小结 32
第二章 Borland C++4中的程序开发工具 33
2.1 连接器TLINK 33
2.1.2 TLINK的文件名 34
2.1.1 使用TLINK 34
2.1.3 TLINK的选择项 35
2.2 库管理器TLIB 36
2.2.1 使用TLIB 36
2.2.2 TLIB的选择项和命令 37
2.3 程序维护实用程序MAKE 38
2.3.1 MAKE文件 38
2.3.2 运行MAKE 41
2.4 Windows的Turbo调试器TDW 42
2.4.1 使用TDW 42
2.4.2 TDW启动 44
2.4.3 调试程序 44
2.5 小结 46
第三章 ANSI标准C概述 47
3.1 C程序的结构 47
3.2 ANSI C转义序列和三符序列 50
3.3 预处理器指令 51
3.3.1 包含文件 51
3.3.2 定义宏 52
3.3.3 条件指令 53
3.3.4 其它指令 54
3.4 变量的说明和定义 54
3.4.1 基本类型 55
3.4.2 枚举 55
3.5 结构、联合和位域 56
3.5.1 数组 57
3.5.3 类型定义 58
3.5.2 指针 58
3.5.4 类型修饰符:Const和Volatile 59
3.6 表达式 59
3.6.1 运算符优先顺序 61
3.7 语句 63
3.7.1 break语句 63
3.7.2 case语句 63
3.7.5 default标号 64
3.7.6 do语句 64
3.7.4 continue语句 64
3.7.3 复合语句或块 64
3.7.7 表达式语句 65
3.7.8 for语句 65
3.7.9 goto语句 65
3.7.10 if语句 66
3.7.11 if-else语句 66
3.7.12 空语句 66
3.7.13 return语句 67
3.7.14 switch语句 67
3.7.15 while语句 68
3.8 函数 68
3.8.1 函数原型 68
3.8.3 具有可变个数参数的函数 69
3.8.2 void类型 69
3.9 ANSI C库 70
3.10 小结 70
第四章 Borland C++对标准C的扩充 71
4.1 Borland C++4特有的关键字 71
4.1.1 支持内存模式的关键字 72
4.1.2 其它特殊关键字 75
4.2 所定义的全局变量和预处理器宏 76
4.3 编译器指令(progma) 79
4.4 基本数据类型的大小和容量 80
4.5 小结 81
5.1 什么是面向对象程序设计 85
第五章 面向对象程序设计基础 85
第二部分 面向对象程序设计 85
5.1.1 面向过程程序设计 86
5.2 面向对象程序设计术语 93
5.2.1 数据抽象 94
5.3 C 中的面向对象程序设计 96
5.4 在C中定义对象 96
5.4.1 实现几何形 99
5.4.2 使用几何形 108
5.4.3 增加一个新的几何形对象 110
5.4.4 C中使用OOP存在的问题 113
5.5 小结 113
第六章 C++和面向对象程序设计 115
6.1 C++中的面向对象程序设计 116
6.1.1 C++中的数据抽象 117
6.1.2 使用File类 120
6.1.3 C++类的继承 121
6.1.4 多形性与动态束缚 121
6.2 C++中的几何形 123
6.2.1 shape类 123
6.2.2 增加新几何形类 128
6.2.3 运行时创建对象 129
6.3 小结 130
7.1 C++的特征 133
7.2.1 缺省参数 133
7.2 C++函数的新特征 133
第七章 C++与ANSI标准C 133
第三部分 学习C++ 133
7.2.2 重载函数名 134
7.2.3 内部函数 134
7.2.4 友员函数 136
7.2.5 作为参数的引用类型 137
7.2.6 重载运算符 139
7.2.7 C++中的数据说明 140
7.3 C++与C的不同 141
7.3.1 新保留字 141
7.3.2 函数原型 142
7.3.3 常数变量 142
7.3.6 sizeof运算符 143
7.3.5 字符数组的初始化 143
7.3.4 空指针 143
7.3.7 enum的作用域 144
7.3.8 对goto的限制 144
7.4 小结 144
第八章 C+十标准输入/输出类 146
8.1 C++的I/O库 146
8.2 C++的流I/O 146
8.2.1 使用iostream 147
8.2.2 使用操作符 149
8.2.3 重载运算符“<<” 153
8.2.4 iostream类的分层 154
8.3 文件I/O 155
8.3.1 简单文件I/O 156
8.3.2 在一个文件中定位 159
8.4 串I/O 161
8.4.1 向一个串写 162
8.4.2 从一个串读出 163
8.5 小结 163
第九章 用类建立对象 165
9.1 作为对象的类 165
9.1.1 用户定义的数据类型 165
9.1.2 类成员的访问控制 167
9.1.3 公有函数可以返回私有值 167
9.1.4 成员函数 169
9.2 实现类 170
9.2.1 头文件描述接口 171
9.2.2 从接口分别实现类 174
9.3 使用类 175
9.3.1 快速创建类 176
9.3.2 在自由存贮区分配对象数组 177
9.3.3 调用成员函数 178
9.3.4 使用静态成员变量 179
9.3.5 初始化静态成员变量 181
9.3.6 使用静态成员函数 183
9.3.7 使用一个指向成员函数的指针 184
9.4 小结 186
10.1.1 理解指针和引用 188
10.1 参数和返回值 188
第十章 定义操作对象 188
10.1.2 按值传递与按引用传送 189
10.1.3 返回一个引用 190
10.1.4 使用引用的原则 191
10.2 创建及删除对象 192
10.2.1 串类的构造函数和析构函数 192
10.2.2 缺省构造函数 193
10.2.3 拷贝构造函数 195
10.2.4 何时提供一个拷贝构造函数 198
10.2.5 成员初始程序列表 198
10.2.6 嵌套类说明 201
10.2.7 开发构造函数与析构函数的副作用 202
10.3.1 This指针 204
10.3 定义函数与运算符 204
10.3.2 类实例的This指针 205
10.3.3 作为函数的运算符 205
10.3.4 为串类定义operator+ 208
10.3.5 为等式测试串 209
10.3.6 存取和修改一个串中的个别字符 210
10.3.7 定义类型转换运算符 210
10.3.8 为串类定义赋值运算符 211
10.3.9 为什么“operator=”返回一个引用 212
10.3.10 重载输入与输出运算符 212
10.3.11 重载new与delete运算符 213
10.3.12 使用友员类 215
10.3.13 把文件作为一个数组来使用 216
10.4 小结 219
第十一章 在C++中使用继承性 221
11.1 派生类 221
11.1.1 继承性可以表示“是一个”关系 221
11.1.2 继承性能够扩充一个类 222
11.1.3 一个派生类的语法 223
11.1.4 基类的访问 223
11.1.5 使用继承性建立一个子String类 224
11.1.6 关于派生类的其它问题 233
11.1.7 多重继承 235
11.1.8 在iostream中使用多重继承 236
11.1.9 虚拟基类 236
11.2 使用继承性 239
11.2.1 链表 240
11.2.2 single_link类 241
11.2.3 双向链表 249
11.3 小结 258
第十二章 虚拟函数与C++ 259
12.1 动态结合 259
12.1.1 静态结合 259
12.1.2 通过一个指针调用函数 260
12.2 虚拟函数 261
12.2.1 纯虚函数 262
12.2.2 虚拟函数的具体实现 263
12.2.3 通过虚拟函数动态结合 263
12.3.1 类的多形性使用的蕴函 266
12.3 使用多形性 266
12.4 小结 269
第十三章 C++中的高级论题 271
13.1 模板 271
13.1.1 整形与浮点数堆栈 271
13.1.2 使用宏的常规类 272
13.1.3 类模板(class templates) 276
13.1.4 函数模板 277
13.1.5 成员函数模板 277
13.1.6 模板的优点 278
13.2 异常处理 278
13.2.1 异常处理的优点 279
13.2.2 setjmp函数与longjmp函数存在的问题 279
13.2.3 C++中推荐的异常处理结构 281
13.3 小结 284
第四部分 在C++中应用OOP技术 287
第十四章 在C++中使用C函数库 287
14.1 C和C++之间的连接 287
14.1.1 类型安全的连接 287
14.1.2 函数名译码的影响 287
14.1.3 C连接指示 289
14.1.4 与其它语言的连接 291
14.2 使用ANSI标准C函数库 292
14.2.1 ANSI C函数库的综合能力 292
14.2.2 标准I/O函数 292
14.2.3 过程控制函数 293
14.2.4 内存分配 295
14.2.5 长度可变的参数列表 296
14.2.6 数据变换 297
14.2.7 数学函数 298
14.2.8 字符类 299
14.2.9 字符串和缓冲区处理 299
14.2.10 在C和C++中的字符串 300
14.2.11 搜索和排序 301
14.2.12 日期和时间 305
14.2.13 一个DateTime类 307
14.3 编译器特有的函数库 309
14.4 小结 309
15.1.2 在单一继承方式下的继承分层 310
15.1.1 编制C++的类 310
第十五章 在C++中建立类库 310
15.1 在C++中建立类库 310
15.1.3 类之间的客户服务器关系 313
15.2 C++的类的公共接口 318
15.2.1 拷贝构造函数(copy constructors)和它的缺省 319
15.2.2 拷贝对象 319
15.2.3 析构函数 320
15.2.4 赋值运算符 320
15.2.5 输入和输出函数 320
15.3 小结 321
第十六章 使用Borland C++的类库 322
16.1 基于模板(template)的包容类 322
16.1.1 基本的数据结构(FDS) 323
16.1.2 抽象数据类型(ADT) 340
16.2 简单类 361
16.2.1 字符串类(string) 362
16.2.2 文件类(TFile class) 365
16.2.3 日期类(TDate class) 366
16.2.4 时间类(TTime Class) 367
16.3 小结 368
第五部分 WindowS编程 371
第十七章 使用Borland C++进行Windows程序设计 371
17.1.1 使用OWL进行Windows程序设计 372
17.1.2 MVC结构 372
17.1.3 一个使用OWL的Windows应用程序 373
17.2.1 使用AppExpert建立应用程序 382
17.2 建立应用程序的工具 382
17.2.2 使用ClassExpert建立应用程序 392
17.3 小结 397
第十八章 使用Windows对象库(OWL) 398
18.1 浏览OWL类 398
18.1.1 应用类 407
18.1.2 菜单 407
18.1.3 窗口类 408
18.1.4 图形设备接口对象 412
18.1.5 设备环境类 413
18.1.6 TScroller类 414
18.1.7 支持的其它类 414
18.2.1 使用Tcontrol类 415
18.2 对OWL类的探索 415
18.2.2 使用对话 436
18.2.3 建立带有小设备图标的工具条 439
18.2.4 使用TScroller自动滚动屏幕 442
18.2.5 确认输入的数据 444
18.2.6 使用主窗口 449
18.2.7 操纵菜单 457
18.3 小结 460
第十九章 使用OWL进行图形程序设计 461
19.1 Windows图形设备接口 461
19.1.1 设备环境 461
19.1.2 GDI坐标系统 466
19.2 使用GDI函数绘图 468
19.2.1 绘制点 468
19.2.2 绘制直线 468
19.2.3 绘制封闭图形 469
19.2.4 控制矩形 470
19.2.5 区域 471
19.2.6 绘图方式 472
19.3 控制颜色 473
19.3.1 系统调色板 474
19.3.2 逻辑调色板 474
19.3.3 创建并使用逻辑调色板 474
19.3.4 操纵逻辑调色板 476
19.3.5 控制调色板消息 477
19.4 位图 479
19.4.1 设备相关位图(DDB) 479
19.4.2 DIB格式 483
19.5 小结 483
第二十章 在Windows中显示文本 485
20.1 简单的文本输出 485
20.2 使用字体 487
20.2.1 字符集 487
20.2.2 font类型 487
20.2.3 font族 488
20.2.4 获取字体信息 489
20.2.5 创建字体 490
20.2.6 列出所有有效字体(Font) 493
20.3 FontSee——列举字体的一个实例 494
20.3.1 为FontSee说明类 494
20.3.2 在FontSee中类的实现 497
20.3.3 运行FontSee 500
20.4 小结 501
第二十一章 控制键盘和鼠标事件 502
21.1 键盘消息 502
21.1.1 输入中心 502
21.1.2 控制击键 502
21.1.3 WM_CHAR消息 507
21.1.4 插入标记 508
21.2 鼠标消息 508
21.2.1 鼠标消息client_area 509
21.2.2 控制鼠标的移动 510
21.2.3 控制光标形状 511
21.3 TexIn——一个文本项目程序 513
21.3.1 Caret类 514
21.3.2 TextIn的其它类 517
21.3.3 运行TextIn 528
21.4 小结 528
第二十二章 声音的产生 530
22.1 Windows下的声音 530
22.1.1 产生声音的程序设计 530
22.1.2 一个样本程序 536
22.2.1 sndPlaySound函数 539
22.2 播放声波形式的声音 539
22.2.2 PlayWave程序 540
22.2.3 使用MCI的命令消息来播放声音 542
22.3 小结 543
第六部分 图形与图象应用 547
第二十三章 图象文件格式 547
23.1 图象文件格式 547
23.1.1 图象文件的公共特征 547
23.1.2 一些常用的图象文件格式 549
23.2 处理图象文件的C++类 550
23.2.1 ImageData类 550
23.2.2 Image类 554
23.2.3 BMPImage类 565
23.2.4 TGAImage类 571
23.2.5 PCXImage类 575
23.2.6 GIFImage类 586
23.2.7 TIFImage类 601
23.3 一个Windows下的图象查看器ImageView 615
23.3.1 运行ImageView 615
23.3.2 ImageViewApp类 615
23.3.3 ImageViewFrame类和ImageViewWindow类 617
23.3.4 生成ImageView 624
24.3. 生成ANIMATE.EXE 624
第二十四章 动画生成 625
24.1 动画技术 625
23.4 小结 625
24.1.1 图元动画 626
24.2 图元动画的C++类 626
24.2.1 Sprite类 635
24.2.2 SpriteAnimation类 649
24.3 动画程序示例 649
24.3.1 AnimationWindow类 657
24.3.2 ANIMATE应用程序 658
24.4 小结 658
25.1.1 演示示例 660
25.1.2 ShowMe描述语言 660
25.1 使用ShowMe 660
第二十五章 一个示例应用程序 660
25.1.3 “本书介绍”演示 666
25.2 ShowMe的实现 670
25.2.1 ShowMeApp类 670
25.2.2 ShowMeWindow类 671
25.2.3 AnimInfo类和SpriteInfo类 694
25.2.4 ShowMeEvent类 700
25.2.5 条件和表达式 702
25.2.6 其它文件 716
25.2.7 建立SHOWME.EXE 717
25.3 小结 717
附录 ANSIC头文件 718
1.在ANSIC头文件中定义的宏和数据类型 718
2.在ANSIC中的头文件 721