第1章 程序设计基础 1
1.1 面向过程的程序设计方法 1
1.1.1 自然语言与计算机语言之间的鸿沟 1
1.1.2 面向过程与结构化程序设计 3
1.2 面向对象的程序设计方法 5
1.3 可视化程序设计 8
1.4 面向对象语言的发展 9
1.5 C++的面向过程和面向对象程序设计 10
1.6.1 对象 11
1.6 C++面向对象程序设计特点 11
1.6.2 抽象和类 12
1.6.3 封装 13
1.6.4 继承 14
1.6.5 多态性 14
1.7 数据对象和数据类型的属性 14
1.7.1 数据对象、变量和常量 14
1.7.2 数据类型规范的基本组件 16
1.7.3 基本数据类型的实现 16
1.8.1 初识C++的函数和对象 17
1.8 C++的基本数据类型和表达式 17
1.8.2 标识符 20
1.8.3 变量对象 21
1.8.4 基本数据类型 22
1.8.5 变量对象的存储类型 23
1.8.6 常量对象 27
1.8.7 匈牙利命名法 29
1.8.8 运算表达式 30
1.8.9 赋值运算符与赋值表达式 31
1.9 面向对象的标记图 33
1.8.10 逗号运算符与逗号表达式 33
1.9.1 类和对象的UML标记图 34
1.9.2 表示对象的结构与连接 34
1.9.3 使用实例 36
1.9.4 对象、类和消息 37
1.10 使用类和对象实例 38
1.10.1 进一步使用C++的对象 38
1.10.2 char和 string对象 40
1.10.3 使用对象小结 42
1.11 程序的编辑、编译和运行的基本概念 43
1.12 本书的结构 44
实验1 如何编辑、编译、调试和运行一个实际程序 45
习题1 46
第2章 结构化编程基础 48
2.1 典型C++程序结构 48
2.1.1 函数和函数原型 49
2.1.2 const修饰符和预处理程序 50
2.1.3 程序注释 52
2.1.4 程序语句 52
2.1.7 数据的简单输入输出格式 54
2.1.5 大小写字母的使用 54
2.1.6 程序的书写格式 54
2.2 关系运算与逻辑运算 58
2.3 结构化程序设计概述 60
2.4 控制选择结构 61
2.4.1 用if语句实现选择结构设计 61
2.4.2 用switch语句实现选择结构设计 64
2.5 循环控制结构设计 65
2.5.1 while语句 65
2.5.2 do~while语句 67
2.5.3 for语句 68
2.5.4 break语句、countinue语句及goto语句 69
2.5.5 控制语句的嵌套 71
实验2 通过调试改正程序中的错误 72
实验2.1查错实验 72
实验2.2编程调试实验 72
习题2 73
3.1 指针 75
3.1.1 构造指针类型 75
第3章 构造类型初探 75
3.1.2 指针类型及指针运算 77
3.1.3 对指针使用const限定符 79
3.1.4 进一步讨论指针 81
3.2 引用 83
3.3 数组 85
3.3.1 一维数组 85
3.3.2 数组与指针的关系 88
3.3.3 多维数组 90
3.3.4 字符串数组 91
3.3.5 指针数组 92
3.3.6 命令行参数 93
3.4 向量容器 93
3.4.1 定义向量列表 94
3.4.2 向量最基本的操作方法 95
3.5 类型定义关键字typedef 98
3.6 枚举 98
3.7 结构 99
3.7.1 结构定义及其对象的初始化 99
3.7.2 结构数组 101
3.7.3 结构指针 102
3.7.4动态分配内存 103
3.8联合 103
实验3 综合实验 105
习题3 105
第4章 函数 108
4.1 函数基础知识 108
4.1.1 函数基本要素 108
4.1.2 函数调用形式 110
4.2.1 传值和传地址 112
4.1.3 递归调用 112
4.2 函数参数的传递方式 112
4.2.2 传引用方式 114
4.2.3 默认参数 114
4.2.4 正确选择函数原型及传递参数 115
4.3 深入讨论函数返回值 119
4.3.1 返回引用的函数 119
4.3.2 返回指针的函数 120
4.3.4 函数返回值作为参数 121
4.3.3 返回对象的函数 121
4.4 函数指针 122
4.4.1 通过函数指针完成对函数的调用 122
4.4.2 通过函数指针对象将函数作为参数传给其他函数 124
4.5 内联函数 126
4.6 函数重载 127
4.7 函数模板 129
4.8 解题算法知识 130
4.8.1 计算机解题 130
4.8.2 算法知识简介 134
实验4.1 编辑多文件程序实验 136
实验4 编辑多文件程序及使用函数和函数指针实验 136
实验4.2使用函数指针实验 137
习题4 137
第5章 对象和类 140
5.1 类及其实例化 140
5.1.1 定义类 140
5.1.2 使用类的对象 143
5.1.3 数据封装 146
5.1.4 成员函数重载及默认参数 147
5.1.5 this指针 148
5.1.6 一个类的对象作为另一个类的成员 149
5.2 类和对象的性质 150
5.2.1 类对象的性质 150
5.2.2 类的性质 151
5.3 结构和联合 153
5.4 构造函数 154
5.4.1 定义构造函数 154
5.4.2 构造函数和运算符new 156
5.4.3 默认构造函数和默认参数 157
5.4.4 复制构造函数 158
5.5 析构函数 159
5.5.1 定义析构函数 159
5.5.2 析构函数和运算符delete 160
5.5.3 默认析构函数 160
5.6 综合例题 161
5.7 重载对象的赋值运算符 163
5.8 对象成员的初始化 166
5.9 类模板与标准模板库 168
5.9.1 类模板 168
5.9.2 标准模板库STL 170
5.10 面向对象编程的文件规范 173
5.10.1 编译指令 173
5.10.2 编写类的头文件 175
实验5 使用类模板 176
习题5 177
第6章 继承和派生类 179
6.1 继承和派生的基本概念 179
6.2 单一继承 181
6.2.1 单一继承的一般形式 181
6.2.2 派生类的构造函数和析构函数 181
6.2.3 类的保护成员 183
6.2.4 访问权限和赋值兼容规则 184
6.3继承类模板 189
6.4 多重继承 193
6.5 继承的构造函数与析构函数调用顺序 194
6.6 二义性及其支配规则 198
6.6.1 二义性和作用域分辨符 198
6.6.2 二义性及名字支配规则 200
6.7 虚基类 200
习题6 202
实验6 公有派生的赋值兼容性规则 202
第7章 多态性和虚函数 204
7.1 多态性 204
7.1.1 静态联编中的赋值兼容性及名字支配规律 204
7.1.2 动态联编的多态性 206
7.2 虚函数 208
7.2.1 虚函数的定义 208
7.2.2 虚函数实现多态性的条件 208
7.2.3 进一步探讨虚函数与实函数的区别 210
7.2.4 构造函数和析构函数调用虚函数 213
7.2.5 纯虚函数与抽象类 215
7.3 多重继承与虚函数 217
实验7 探讨影响虚函数表长度的因素 218
习题7 219
第8章 类的成员和对象 221
8.1 静态成员 221
8.2 友元函数 224
8.3 const对象和volatile对象 228
8.4 转换函数 232
8.5 指向类成员的指针 233
8.6 数组和类 237
实验8 使用类成员函数的指针 238
习题8 239
第9章 运算符重载及流类库 240
9.1 运算符重载 240
9.1.1 运算符重载的实质 240
9.1.2 类运算符和友元运算符的异同 241
9.1.3 ++和--运算符的重载 243
9.2.1 流类库的基本类等级 245
9.2 流类库 245
9.2.2 运算符“《”和“》”的重载 246
9.2.3 格式控制 248
9.3 文件操作 250
9.3.1 文件操作方式 250
9.3.2 常用输出文件流成员函数 251
9.3.3 二进制输出文件 254
9.3.4 常用输入流及其成员函数 254
9.3.5 文件读写综合实例 257
实验9综合实验 260
习题9 261
第10章 面向对象课程设计 262
10.1 面向对象系统分析基础知识 262
10.1.1 面向对象的主要原则 262
10.1.2 OOA模型 266
10.1.3 发现对象并建立对象层 266
10.1.4 定义数据成员 268
10.1.5 定义成员函数 270
10.1.6 如何发现基类和派生类结构 270
10.2 接口继承与实现继承 272
10.3 类的成员 279
10.4 命名空间 279
10.5 异常处理 281
10.5.1 引入异常处理 281
10.5.2 异常处理思想 283
10.5.3 异常处理的实现 284
10.5.4 异常处理中的构造与析构 287
10.6 虚基类和多继承实例 288
10.7.1 简单的链表实例 292
10.7 链表 292
10.7.2 改进封装性的实例 294
实验10 改进链表实验 296
习题10 296
第11章Windows程序基本风格 298
11.1 一个简单的Windows程序 298
11.1.1 手工编制一个简单的Windows程序 298
11.1.2 Windows的程序结构 302
11.1.3 WinMain函数 304
11.1.4 WndProc函数 309
11.1.5 Windows程序编程特点分析 311
11.2.1 使用APPWizard生成程序框架 312
11.2 使用向导编程 312
11.2.2 Windows程序的组成 315
11.2.3 使用资源程序的组织原理图 316
11.2.4 添加自己的代码 317
11.3使用消息映射表 319
11.3.1 为消息处理建立映射表 319
11.3.2 为命令消息建立映射表 320
实验11 熟悉Windows编程 325
习题11 326
12.1 一个使用全局对象的程序 327
第12章 使用MFC类库编程 327
1 2.2 使用MFC编制Win32 Application程序 328
12.2.1 Hello MFC 329
12.2.2 简单分析 330
1 2.3 模拟文档/视结构的MFC程序 335
1 2.3.1 程序清单 336
12.3.2 多文件中的消息映射 340
12.3.3 资源文件 342
12.3.4 单文档模板 344
12.3.5 动态创建 345
12.4 MFC类库与编程向导AppWizard 346
12.4.1 自动生成文档/视结构实例 346
12.4.2 MFC和Application Framework 348
12.4.3 MFC概貌 349
12.4.4 向导提供的程序风格 356
12.5 基于对话框风格的设计实例 357
12.5.1 界面设计 357
12.5.2 设置成员变量 358
12.5.3 增加消息处理函数 359
实验12将两个字符串拼接后输出的实验 360
习题12 361
第13章 MFC文档/视结构 362
1 3.1 MFC单文档应用程序结构 362
13.2 文档对象 364
13.3 视的对象 366
13.4 文档和视的联系 369
13.4.1 逻辑关系 370
13.4.2 调用关系 370
13.4.3 配合实例 370
13.5 框架窗口 371
13.6 文档模板 373
13.7 分析单文档应用程序 376
13.7.1 应用程序类CTestApp 376
13.7.2 文档类CTestDoc 378
13.7.3 视类CTestView 378
13.7.4 框架窗口类CMainFrame 378
13.7.5 对话框类CAboutDlg 379
13.7.6 工具栏和状态栏 380
13.7.7 标准菜单 381
13.8 创建单文档应用程序实例 382
13.9 多文档应用程序简介 386
13.9.1 MDI的三位一体创建流程 386
13.9.2 MDI的菜单 387
13.9.3 创建MDI应用程序 389
13.10 消息处理映射规则 389
13.11 各对象之间关系综述 390
1 3.12 本章小结 391
实验13 输出三角形3条边长并显示其图形的实验 392
习题13 392
14.1 简单的数值输出和画图实例 393
第14章可视化设计实例 393
14.2 使用计算数据画直方图实例 394
14.3 可滚动的多文档实例 397
14.3.1 设计思想 397
14.3.2 设计实现 399
14.4 不同类型文档的实例 406
14.4.1 增加新的文档模板 407
14.4.2 设计文本文档的菜单 409
14.4.3 编程实现其他函数 410
14.4.4 编译运行程序 411
习题14 413
14.5 综合自选实验 413
附录A按字母表顺序排序的C和C++保留字 414
附录B C语言关键字 415
附录C C和C++语言过程设计算法描述方法 416
附录D C语言的printf格式输出函数 418
附录E C语言的scanf格式输入函数 420
附录F 以CObject为直接基类的派生类图 422
附录G CCmdTarget类的派生类图 423
参考文献 424