1.1 程序设计语言的发展 1
1.1.1 编程语言的发展 1
第1章 面向对象程序设计概述 1
1.1.2 C++语言的起源与特点 2
1.1.3 C++源程序的构成 3
1.2 面向对象的方法 4
1.2.1 面向对象方法的由来 4
1.2.2 面向对象的基本概念 5
1.3.1 面向对象的分析 6
1.3 面向对象的软件开发 6
1.3.2 面向对象的设计 7
1.3.3 面向对象的编程 7
1.3.4 面向对象程序的调试 7
1.3.5 面向对象的维护 7
1.4 C++语言的词法和词法规则 8
1.4.1 C++语言的字符集 8
1.4.2 单词及词法规则 8
1.5 C++程序在Visual C++.NET中的编译运行 10
1.6 小结 12
习题一 12
第2章 数据类型、运算符和控制结构 14
2.1 基本数据类型 14
2.1.1 基本数据类型 14
2.1.2 常量和符号常量 15
2.1.3 变量 16
2.2.2 运算符与表达式 18
2.2.1 运算符简介 18
2.2 运算符与表达式 18
2.3 C++的输入输出 24
2.3.1 用cout进行输出 25
2.3.2 用cin进行输入 26
2.4 选择语句 27
2.4.1 if语句 27
2.4.2 switch语句 30
2.5 循环语句 32
2.5.1 while循环语句 32
2.5.2 do-while循环语句 33
2.5.3 for循环语句 34
2.5.4 循环的嵌套 36
2.5.5 其他控制语句 37
2.6 自定义数据类型 38
2.6.1 类型定义 38
2.6.2 枚举类型 39
2.6.3 结构体类型 41
2.7 小结 44
习题二 45
第3章 数组、函数与指针 47
3.1 数组 47
3.1.1 数组的定义 47
3.1.2 数组元素的表示 48
3.1.3 数组的赋值 48
3.2 函数 51
3.2.1 函数的定义和说明 51
3.2.2 函数的调用 52
3.2.3 函数的参数 55
3.2.4 内联函数 57
3.2.5 函数重载 58
3.2.6 函数模板 60
3.3 指针 62
3.3.1 指针的定义 62
3.3.2 指针的赋值 63
3.3.3 指针的运算 63
3.4 指针与数组 64
3.4.1 指向数组的指针 64
3.5.1 指针作为函数参数 66
3.4.2 指针数组 66
3.5 指针与函数 66
3.5.2 指针型函数 69
3.5.3 函数指针 69
3.6 动态内存分配 71
3.7 小结 72
习题三 72
4.1.2 类的定义格式 75
4.1.1 类的概念 75
4.1 类的定义 75
第4章 类与封装性 75
4.2 对象的定义 78
4.2.1 对象的定义 78
4.2.2 对象的引用 78
4.3 构造函数与析构函数 81
4.3.1 构造函数的定义 81
4.3.2 缺省参数的构造函数 85
4.3.3 析构函数 87
4.3.4 重载构造函数 89
4.3.5 拷贝构造函数 91
4.4 静态成员 93
4.4.1 静态数据成员 93
4.4.2 静态成员函数 95
4.5 友元 97
4.5.1 友元函数 97
4.5.2 友元类 98
4.6.1 对象数组 100
4.6 对象数组与对象指针 100
4.6.2 对象的指针 101
4.6.3 this指针 103
4.7 常类型 105
4.7.1 常对象 105
4.7.2 常指针 105
4.7.3 常引用 106
4.7.4 常数据成员 106
4.7.5 常成员函数 107
4.8.1 类模板的定义 109
4.8 类模板 109
4.8.2 生成对象 110
4.8.3 类模板的构造函数 111
4.9 应用实例 111
4.10 小结 121
习题四 121
第5章 派生类与继承性 123
5.1 派生类的概念和定义 123
5.1.1 派生类的概念 123
5.1.2 派生类的定义 124
5.1.3 派生类新定义的成员与继承来的成员的关系 126
5.1.4 派生类中的静态成员 127
5.2 访问控制 127
5.2.1 公有继承 128
5.2.2 私有继承 132
5.2.3 保护继承 134
5.3 派生类的构造函数和析构函数 135
5.3.1 派生类构造函数和析构函数的执行顺序 135
5.3.2 派生类构造函数和析构函数的构造规则 137
5.4 多重继承与虚基类 142
5.4.1 多重继承的概念 142
5.4.2 多重继承派生的构造函数 142
5.4.3 多重继承中的二义性问题 143
5.4.4 虚基类 145
5.5 类类型转换 145
5.5.1 通过单一参数的构造函数将一般类型转换为类类型 146
5.5.2 通过类型转换函数将类类型转换为一般类型 147
5.6 应用举例 149
5.7 小结 151
习题五 152
第6章 运算符重载、虚函数与多态性 154
6.1 多态性概述 154
6.2 运算符重载 155
6.2.1 运算符重载的规则 155
6.2.2 运算符重载为成员函数 156
6.2.3 运算符重载为友元函数 158
6.2.5 “++”和“--”运算符的重载 161
6.2.4 成员运算符函数与友元运算符函数的比较 161
6.2.6 下标运算符“[]”的重载 164
6.2.7 函数调用运算符“()”的重载 165
6.2.8 应用实例 166
6.3 虚函数 174
6.3.1 派生类与基类的转换 174
6.3.2 虚函数 176
6.4 纯虚函数和抽像类 181
6.4.1 纯虚函数 181
6.4.2 抽像类 182
6.5 程序应用实例 183
6.6 小结 194
习题六 195
第7章 应用程序设计基础 196
7.1 概述 196
7.1.1 用C++开发面向对象的Windows应用程序 196
7.1.2 Visual C++.NET集成开发环境和开发工具 196
7.1.3 VisualC++.NET操作界面 197
7.1.4 菜单栏 198
7.1.5 项目和解决方案 199
7.1.6 资源与资源编辑器 201
7.2 MFC类库简介 202
7.2.1 MFC C++类库简介 202
7.2.2 预定义宏、全局变量和全局函数 206
7.3 应用程序框架 207
7.3.1 应用程序基本结构 208
7.3.2 使用应用程序向导生成应用程序的框架 209
7.4.1 创建全局对象 214
7.4 HeIlo程序及其基本流程 214
7.4.2 程序入口点WinMain 215
7.4.3 应用程序的初始化 215
7.4.4 窗口的注册、产生和显示 216
7.4.5 消息循环 216
7.4.6 视图窗口的创建和绘制 217
7.4.7 应用程序的启动、运行和退出 217
7.5 消息和事件的映射与传递 218
7.5.1 消息和事件的概念 218
7.5.2 消息和事件的处理函数 219
7.5.3 消息和事件的映射 220
7.5.4 消息和事件的传递 221
习题七 222
第8章 窗口、菜单和绘图程序设计 223
8.1 边框窗口 223
8.1.1 边框窗口的创建与销毁 223
8.1.2 定制边框窗口 224
8.1.3 边框窗口类及成员函数 225
8.1.4 分隔窗口 226
8.2 视图 228
8.2.1 视图类 228
8.2.2 在视图中绘制图形 229
8.2.3 在视图中与用户交互 230
8.2.4 视图的滚动和缩放 230
8.3 菜单 231
8.3.1 菜单编辑器 231
8.3.2 菜单类 233
8.4 绘图 234
8.3.3 菜单界面更新 234
8.4.1 CDC类 235
8.4.2 绘图工具选择 235
8.4.3 坐标系统设置与转换 237
8.4.4 绘图模式与背景设置 239
8.4.5 图形绘制 240
8.4.6 区域填充 242
8.5 菜单和绘图实例 243
8.5.1 增加绘图菜单 243
8.5.3 编写菜单命令的消息处理函数代码 244
8.5.2 进行菜单命令的消息映射 244
8.5.4 运行并绘图 246
习题八 247
第9章 文档/视图结构程序设计 248
9.1 文档/视图结构 248
9.1.1 文档/视图结构的含义 248
9.1.2 建立文档/视图结构的画线程序框架 249
9.1.3 文档/视图结构的框架代码 249
9.2.1 文档类 251
9.2 文档 251
9.2.2 文档类的成员函数 252
9.2.3 与文件存储有关的档案类和文件类 253
9.3 文档模板 254
9.3.1 文档模板的功能 254
9.3.2 文档模板的创建 255
9.3.3 文档模板类及成员函数 255
9.4 文档/视图结构的画线程序实现 256
9.4.1 在屏幕上画线 256
9.4.2 定义直线类并在文档类中保存直线 259
9.4.3 实现“撤消”功能 262
9.4.4 实现文件保存和打开 263
9.4.5 滚动处理 265
9.4.6 窗口分割 267
习题九 268
第10章 对话框与控件程序设计 270
10.1 自定义对话框 270
10.1.1 对话编辑器 270
10.1.3 对话框类的成员函数 272
10.1.2 对话框类 272
10.1.4 与对话框类有关的CDataExchange类 273
10.2 公用对话框 274
10.2.1 文件对话框类CFileDialog 274
10.2.2 字体对话框类CFontDialog 275
10.2.3 颜色对话框类CCoIorDialog 276
10.2.4 寻找替换对话框类CFindReplaceDialog 277
10.2.5 打印对话框类CPrintDialog 277
10.3.1 控件分类 278
10.3 控件与控件类 278
10.3.2 控件的使用方法概要 280
10.3.3 标准控件的使用 281
10.4 画线程序的线型线宽对话框实例 283
10.4.1 创建线型线宽对话框资源 283
10.4.2 创建线型线宽对话框类 284
10.4.3 修改对话框类代码 286
10.4.4 添加“选项”菜单 288
10.4.5 创建对话框对象并显示对话框 289
10.4.7 画线程序的编译运行 294
10.4.6 添加工具栏按钮 294
习题十 296
第11章 面向对象的程序设计 297
11.1 面向对象的程序设计思路 297
11.1.1 类与数据封装 297
11.1.2 派生类与继承性 298
11.1.3 虚函数与多态性 299
11.1.4 数据存储与屏幕重绘 300
11.1.5 画图程序的设计思路 301
11.2 图形类的定义 302
11.2.1 图形基类CShape 302
11.2.2 直线类CLine 303
11.2.3 圆弧类CArc 304
11.2.4 贝塞尔曲线类CBezier 305
11.2.5 矩形类CRectangle 307
11.2.6 圆角矩形类CRoundRect 308
11.2.7 圆类CCircle 310
11.2.8 椭圆类CEllipse 311
11.2.9 多边形类CPolygon 313
11.3 二维图形程序的实现 316
11.3.1 修改文档类代码 316
11.3.2 修改视图类代码 318
11.3.3 增加绘图菜单 325
11.3.4 创建绘图工具栏 330
11.3.5 二维图形程序的编译运行 332
习题十一 333
12.1.1 多线程的概念 334
12.1 多线程程序的概念、类型及设计思路 334
第12章 多线程程序设计 334
12.1.2 多线程的类型 335
12.1.3 多线程程序的设计思路 336
12.2 多线程程序有关的类及函数 337
12.2.1 CWinThread类 337
12.2.2 同步类 338
12.2.3 窗口类 339
12.3.1 单线程多文字窗口程序的实现 340
12.3 工作者线程的实现 340
12.2.4 全局函数 340
12.3.2 工作者线程的实现 343
12.4 用户界面线程的实现 345
12.4.1 增加弹球子窗口类 345
12.4.2 增加弹球视图类 349
12.4.3 增加弹球线程类 354
12.4.4 增加弹球线程的用户操作界面 355
12.5 多线程程序的编译运行 360
习题十二 361