第1章 程序设计语言概论 1
1.1 程序设计语言的历史 1
1.1.1 程序设计语言 1
目录 1
1.1.2 如何学习和使用程序设计语言 3
1.1.3 程序设计语言的发展过程 4
1.1.4 C++语言的主要特点 5
1.2 程序设计语言范型概述 7
1.2.1 过程式语言 8
1.2.2 功能型语言 8
1.3 面向对象的程序设计 9
1.2.3 面向对象语言 9
1.2.4 脚本式语言 9
1.3.1 对象 10
1.3.2 面向对象的方法 11
1.3.3 封装(Encapsulation) 12
1.3.4 继承(Inheritance) 14
1.3.5 多态性(Polymorphism) 15
本章小结 16
习题一 16
2.1.2 C++的词法记号 17
2.1.1 C++的字符集 17
第2章 C++基础 17
2.1 C++的字符集和词法记号 17
2.2 C++的程序结构 18
2.2.1 最简单的C++程序结构 18
2.2.2 C++程序结构的特点 19
2.3 C++的基本数据类型 20
2.3.1 基本数据类型 20
2.3.2 基本常量 21
2.3.3 变量 23
2.3.4 强制类型转换 24
2.4 C++的运算符与表达式 25
2.4.1 运算符的分类 25
2.4.2 表达式 29
2.5 C++的基本语句 31
2.5.1 赋值与复合赋值语句 31
2.5.2 输出语句 32
2.5.3 输入语句 33
2.5.4 简单的格式控制 33
2.6.1 自增操作 34
2.6 C++的自增和自减操作 34
2.5.5 复合语句 34
2.6.2 自减操作 35
2.6.3 有关自增和自减操作在表达式使用中的问题说明 36
2.7 C++的字符串类 36
2.8 C++的构造类型 37
2.8.1 枚举类型 37
2.8.2 结构类型 38
2.8.3 联合类型 44
2.9 简单的C++程序设计举例 50
本章小结 53
习题二 54
第3章 控制结构 55
3.1 简单选择结构 55
3.1.1 关系运算与逻辑运算简介 55
3.1.2 if结构 56
3.2 多重选择结构 60
3.3 循环结构 63
3.3.1 for循环 63
3.3.2 while循环 65
3.3.3 do—while循环 66
3.3.4 多重循环 67
3.4.1 break语句 69
3 4 转移语句 69
3.4.2 continue语句 70
3.4.3 goto语句 71
3.5 选择与循环结构程序举例 71
本章小结 77
习题三 78
4.1 函数的定义与函数原型 80
4.1.1 函数的定义 80
第4章 函数 80
4.1.2 函数的说明 81
4.2 参数传递与函数调用 82
4.2.1 形式参数与实际参数 82
4.2.2 参数传递 83
4.2.3 设置函数参数的默认值 86
4.2.4 函数的引用调用 87
4.3 内联函数 90
4.3.1 内联函数的意义 90
4.3.2 内联函数的定义 91
4.4.1 函数的嵌套 92
4.3.3 使用内联函数的规则 92
4.4 递归函数设计 92
4.4.2 递归调用 94
4.5 函数重载 96
4.5.1 函数重载的意义 96
4.5.2 函数重载 96
4.6 调用C++系统函数 100
本章小结 102
习题四 103
5.1 面向对象的抽象与封装机制 107
第5章 类与对象 107
5.2 类的声明和类的实现 108
5.2.1 类的声明 108
5.2.2 类的实现 110
5.2.3 访问控制 112
5.3 对象 114
5.4 类的特殊成员函数 116
5.4.1 说明语句的执行过程 116
5.4.2 构造函数 116
5.5 对象的拷贝赋值操作与拷贝构造函数 118
5.4.3 析构函数 118
5.5.1 对象的赋值操作 119
5.5.2 拷贝构造函数 122
5.6 成员函数的内联实现 129
5.7 成员函数的缺省参数值 130
5.8 成员函数的重载 132
*5.9 用union说明的类 134
*5.10 嵌套类和局域类 137
5.10.1 嵌套类 137
5.10.2 局域类 139
5.11 聚集类 140
本章小结 145
习题五 146
第6章 程序结构 149
6.1 对象的作用域与可见性 149
6.1.1 对象的作用域 149
6.1.2 对象的可见性 151
6.2 对象的生存期 152
6.3 对象的存储类型 155
6.3.1 用const修饰的常量对象 155
6.3.2 静态成员 159
6.4 友元 163
6.5 C++程序中的各类文件 166
6.6 宏和编译预处理 168
本章小结 172
习题六 173
第7章 数组 175
7.1 一维数组 175
7.1.1 一维数组的声明 175
7.1.2 一维数组的使用 176
7.1.3 一维数组的初始化 177
7.1.4 数组的运算及数组作为函数参数 178
7.2.1 字符数组的声明和使用 183
7.2 字符数组 183
7.2.2 字符数组的初始化 184
7.2.3 关于wchar_t类型的字符串 185
7.2.4 字符串处理函数 186
7.3 多维数组 192
7.3.1 多维数组的说明与使用 193
*7.3.2 多维数组的存储结构 194
7.3.3 多维数组的初始化 197
7.4 数组应用举例 198
7.5.1 对象数组的说明 200
7.5 对象数组 200
7.5.2 对象数组的初始化及存储结构 201
7.5.3 对象数组中元素的引用 202
本章小结 204
习题七 204
第8章 操作符重载 206
8.1 操作符重载概述 206
8.2 操作符重载为类的成员函数 209
8.3 操作符重载为友员函数 214
8.4 增量/减量操作符的重载 218
*8.5 下标操作符的重载 220
8.6 函数调用操作符的重载 224
*8.7 类成员访问指针操作符的重载 225
本章小结 227
习题八 228
第9章 指针与引用 229
9.1 指针和引用的概念及其使用 229
9.1.1 指针和引用的概念 229
9.1.2 指针的声明 230
9.1.3 指针的使用 232
9.2 指针的运算 236
9.2.1 指针的算术运算 237
9.2.2 指针的赋值运算和关系运算 241
9.3 引用 243
9.3.1 引用的声明 243
9.3.2 引用的使用 244
9.3.3 指针和引用作为函数参数的比较 247
9.4 指针与数组的关系 248
9.4.1 一维数组的指针表示 249
9.4.2 一维数组参数的指针表示 250
9.4.3 多维数组的指针表示 251
9.4.4 多维数组参数的指针表示 254
9.5 字符指针 255
9.5.1 字符指针对字符串的作用 255
9.5.2 字符指针作为函数的参数 257
9.6 指针数组 260
9.6.1 指针数组的声明及使用 260
9.6.2 多重指针 263
9.6.3 命令行参数 264
9.7 指针函数与函数指针 265
9.7.1 指针函数的声明与使用 265
9.7.2 函数指针的声明与使用 267
9.8 this指针 271
9.9 指向类成员的指针 273
9.9.1 非静态成员的指针 273
9.9.2 静态成员的指针 275
9.10 动态存储管理 277
9.10.1 new操作和delete操作 278
9.10.2 new[]操作和delete[]操作 280
9.10.3 用new[]操作和delete[]操作动态创建和清除多维数组 281
*9.11 类型表达式与复杂声明 283
9.11.1 类型表达式 284
9.11.2 复杂类型的解释 286
9.11.3 复杂类型的使用 287
9.12 C++标准库、string类和String类 288
9.12.1 C++标准库 288
9.12.2 string类 289
*9.12.3 String类 293
本章小结 301
习题九 302
第10章 继承 303
10.1 继承 303
10.2.1 继承方式和访问控制 306
10.2 对基类成员的访问 306
10.2.2 公有继承 309
10.2.3 私有继承 312
10.2.4 保护继承 314
10.3 多继承 315
10.4 派生类的构造函数、拷贝构造函数与析构函数 318
10.4.1 派生类的构造函数和析构函数 318
10.4.2 派生类的拷贝构造函数 321
10.5 二义性和支配规则 325
10.6 虚基类 328
10.7 派生类的初始化与赋值操作 332
本章小结 336
习题十 337
第11章 多态性 339
11.1 概述 339
11.2 类型强制 341
11.2.1 构造函数实现的类型强制 341
11.2.2 用类型强制转换成员函数实现类型强制 343
11.3 子类型 345
11.3.1 子类型及多态指针和多态引用 345
11.3.2 多态程序 347
11.4.1 静态束定 349
11.4 静态束定、动态束定和虚函数 349
11.4.2 动态束定与虚函数 351
11.4.3 关于虚函数的进一步讨论 353
11.4.4 隐藏与指定 357
11.5 纯虚函数与抽象类 359
11.5.1 纯虚函数 360
11.5.2 抽象类 362
*11.6 虚析构函数 368
*11.7 多态性的程序设计实例 371
本章小结 381
习题十一 382
第12章 模板 384
12.1 概述 384
12.2 函数模板 385
12.3 类模板 387
12.4 用类模板构造简单线性表 390
12.5 用类模板构造单向链表 394
本章小结 399
习题十二 400
13.2 异常处理机制 401
第13章 异常处理 401
13.1 异常的概念 401
13.3 异常处理实例 405
13.4 异常处理中的构造函数与析构函数 409
本章小结 411
习题十三 412
14.1.1 iostream类库的头文件 413
14.1.2 输入/输出流类和对象 413
14.1 输入/输出流类的结构 413
第14章 输入/输出流类库 413
14.1.3 输出流 414
14.1.4 输入流 415
14.2 文件流类 416
14.3 串流类 419
14.4 格式控制 420
14.5 流类成员函数的使用 423
14.6 数据文件的输入/输出操作 425
本章小结 428
习题十四 429
15.1 Windows编程的特点 430
第15章 Windows编程基础 430
15.2 Visual C++集成开发环境的使用 432
15.2.1 Win32 Console Application工程的使用 432
15.2.2 Win32 Application工程的使用 434
15.3 MFC的体系结构 441
15.4 Windows编程常用的扩充数据类型 443
15.5 几个简单的MFC数据类型类 445
15.6 MFC Windows应用程序典型执行过程和消息处理机制的建立 445
15.6.1 MFC Windows应用程序典型执行过程 445
15.6.2 MFC Windows应用程序消息处理机制的建立 446
15.7 基于框架结构的MFC Windows程序 451
15.7.1 用MFC AppWizard(exe)创建一个单文档应用程序 451
15.7.2 开发基于框架结构的MFC Windows程序的几点说明 452
15.7.3 文档/视图结构消息处理次序 456
本章小结 457
习题十五 458
第16章 文本和图形输出 459
16.1 鼠标和键盘消息 459
16.1.1 鼠标消息 459
16.1.2 键盘消息 461
16.2.1 基本的文本输出 462
16.2 文本输出 462
16.2.2 设置文本及其背景的颜色 465
16.3 字体 467
16.3.1 字体的基本知识 467
16.3.2 逻辑字体/自定义字体 470
16.4 文本输出技巧举例 474
16.4.1 动画字体的显示 474
16.4.2 滚动字幕的实现举例 478
16.4.3 随机数的产生与显示 480
16.5.1 基本图形显示 483
16.5 图形输出 483
16.5.2 GDI对象 489
16.6 绘图坐标系与坐标映射方式 495
16.7 图形动画实现举例 496
16.8 位图 498
本章小结 502
习题十六 503
第17章 对话框及常用控件 504
17.1 对话框的使用 504
17.1.1 模式对话框和无模式对话框 505
17.1.2 使用对话框编辑器 506
17.1.3 对话框的编程 507
17.2 控件的创建和使用 508
17.2.1 在对话框中创建和使用控件 508
17.2.2 控件的通用属性 509
17.2.3 控件的消息 510
17.3 Windows常用控件 512
17.3.1 静态控件和按钮 513
17.3.2 编辑框 516
17.3.3 列表框 522
17.3.4 组合框 524
17.3.5 滚动条(Scroll bar) 526
17.3.6 滑动条和旋转按钮 527
17.3.7 其他常用控件的使用 533
17.4 通用对话框简介 539
17.5 几个设计与应用技巧 542
本章小结 546
习题十七 547
附录 548
附录1 ASCII字符集 548
附录2 C++语言的运算符及其优先级和结合性 548
参考文献 551