第1章 面向对象程序设计概述 1
1.1程序设计语言的发展 1
1.1.1机器语言 1
1.1.2汇编语言 2
1.1.3高级语言 2
1.1.4面向对象语言 3
1.2面向对象程序设计的基本概念 3
1.2.1面向对象方法的产生 4
1.2.2面向对象与面向过程的区别 4
1.2.3类与对象的概念 5
1.2.4消息与事件的概念 6
1.3面向对象程序设计的特点 7
1.3.1抽象性 7
1.3.2封装性 7
1.3.3继承性 8
1.3.4多态性 9
1.3.5 C+++的面向对象特性 10
1.4面向对象程序设计语言 11
1.4.1混合型面向对象语言C+++ 11
1.4.2 Java语言 12
1.5面向对象软件开发 12
1.5.1面向对象分析 13
1.5.2面向对象设计 13
1.5.3面向对象编程 13
1.5.4面向对象测试 14
1.5.5面向对象软件维护 14
1.6本章小结 15
1.7思考与练习题 16
第2章 C+程序设计基础 17
2.1 C++语言概述 17
2.1.1 C+++的产生 17
2.1.2 C+++的特点 18
2.1.3 C+++字符集 18
2.1.4 C+++程序的组成 19
2.2 C++基本数据类型 22
2.2.1基本数据类型 22
2.2.2常量 23
2.2.3变量 26
2.2.4符号常量 30
2.3运算符与表达式 31
2.3.1表达式 31
2.3.2运算符及性质 31
2.3.3运算符的优先级 38
2.3.4混合运算时数据类型的转换 39
2.4简单的输入与输出 41
2.4.1 I/O流简介 41
2.4.2插入运算符和提取运算符 41
2.4.3简单的I/O格式 42
2.5程序的基本控制结构 42
2.5.1顺序结构 42
2.5.2选择结构 42
2.5.3循环结构 48
2.6自定义数据类型 52
2.6.1结构体 52
2.6.2联合体 54
2.6.3枚举类型 56
2.6.4 typedef的应用 58
2.7本章小结 59
2.8思考与练习题 59
第3章 函数 61
3.1函数的定义与使用 61
3.1.1函数的定义 62
3.1.2函数的调用 62
3.1.3函数原型 64
3.2函数的参数传递 65
3.2.1传值调用 66
3.2.2传地址调用 67
3.2.3引用调用 68
3.3函数的嵌套调用与递归调用 68
3.3.1函数的嵌套调用 69
3.3.2函数的递归调用 70
3.4函数的其他问题 72
3.4.1内联函数 72
3.4.2函数重载的概念 74
3.4.3带默认参数的函数 75
3.4.4 C+++系统函数 76
3.5作用域与存储类型 77
3.5.1作用域 77
3.5.2存储类型 80
3.5.3生存期 80
3.6全局变量与局部变量 81
3.6.1全局变量 81
3.6.2局部变量 81
3.7头文件与多文件结构 82
3.7.1头文件 82
3.7.2多文件结构 83
3.8编译预处理 84
3.8.1宏定义 84
3.8.2文件包含指令 84
3.8.3条件编译 85
3.9本章小结 86
3.10思考与练习题 87
第4章 类与对象 88
4.1类概述 88
4.1.1类的特点 88
4.1.2类的定义 89
4.1.3访问控制 91
4.2成员函数 92
4.2.1成员函数的定义 92
4.2.2内联成员函数 93
4.3对象 94
4.3.1对象的定义 94
4.3.2类成员的访问 95
4.4构造函数与析构函数 98
4.4.1构造函数 98
4.4.2析构函数 101
4.4.3复制构造函数 105
4.4.4浅复制与深复制 110
4.5静态成员 113
4.5.1静态成员的定义与引用 114
4.5.2静态数据成员 114
4.5.3静态成员函数 115
4.6友元 117
4.6.1友元的作用 117
4.6.2友元函数 118
4.6.3友元类 119
4.7类作用域及对象的生存期 121
4.7.1类作用域 121
4.7.2对象的生存期 121
4.8名空间 122
4.8.1名空间的定义 123
4.8.2名空间成员的访问 123
4.8.3名空间的应用 123
4.9常类型 125
4.9.1常引用 125
4.9.2常对象 126
4.9.3常对象成员 127
4.10本章小结 130
4.11思考与练习题 131
第5章 数组与指针 135
5.1数组 135
5.1.1一维数组 135
5.1.2二维数组 139
5.1.3对象数组 143
5.2指针 145
5.2.1内存空间的访问 145
5.2.2指针变量的定义 146
5.2.3“*”和“&”运算符 147
5.2.4指针的赋值 147
5.3指针运算 149
5.3.1指针的算术运算 149
5.3.2指针的关系运算 150
5.4指针与数组 151
5.4.1一维数组元素的指针表示 151
5.4.2二维数组元素的指针表示 152
5.4.3指针数组 153
5.5指针与函数 154
5.5.1采用指针作为函数参数 155
5.5.2指针型函数 156
5.5.3指向函数的指针 157
5.6指针与字符串 158
5.6.1通过指针访问字符串 158
5.6.2采用字符指针作为函数参数 159
5.7对象指针 160
5.7.1对象指针的概念 160
5.7.2类数据成员的指针 161
5.7.3类成员函数的指针 161
5.7.4 this指针 163
5.8动态内存分配 164
5.8.1 new运算符 164
5.8.2 delete运算符 165
5.9本章小结 167
5.10思考与练习题 168
第6章 继承与派生 170
6.1继承与派生的概念 170
6.1.1继承的层次结构 170
6.1.2为什么使用继承 171
6.2派生类 172
6.2.1派生类的定义 172
6.2.2派生类的生成过程 175
6.3访问权限的控制 176
6.3.1公有继承 176
6.3.2私有继承 178
6.3.3保护继承 179
6.4派生类的构造函数和析构函数 182
6.4.1派生类的构造函数 182
6.4.2派生类的析构函数 185
6.5多继承 186
6.5.1多继承的定义 186
6.5.2多继承的构造函数 186
6.5.3多继承的析构函数 189
6.5.4虚基类 191
6.6赋值兼容规则 194
6.7程序实例 197
6.8本章小结 201
6.9思考与练习题 202
第7章 多态性 205
7.1多态性的实现类型 205
7.2联编 206
7.2.1静态联编 206
7.2.2动态联编 208
7.3虚函数 208
7.3.1虚函数的声明 208
7.3.2虚函数的调用 209
7.3.3虚析构函数 212
7.4抽象类 214
7.4.1纯虚函数的定义 214
7.4.2抽象类的使用 214
7.5函数重载 217
7.6运算符重载 218
7.6.1运算符重载规则 218
7.6.2运算符重载为成员函数 219
7.6.3运算符重载为友元函数 227
7.7综合设计举例 228
7.8本章小结 232
7.9思考与练习题 232
第8章 模板 234
8.1模板概述 234
8.2函数模板 235
8.2.1函数模板的定义 235
8.2.2函数模板的使用 236
8.2.3函数模板的生成 237
8.3类模板 238
8.3.1类模板的定义 238
8.3.2类模板的使用 240
8.3.3类模板的友元 242
8.4 ST L简介 245
8.4.1 STL和C+++标准函数库 245
8.4.2容器 246
8.4.3算法 247
8.4.4迭代器 248
8.4.5函数对象 249
8.5 STL应用实例 250
8.6本章小结 254
8.7思考与练习题 254
第9章 I/O流 256
9.1 I/O流库的层次结构 256
9.1.1流的概念 256
9.1.2 ios类的层次关系 257
9.1.3 streambuf类的层次关系 258
9.2输入与输出格式的控制 258
9.2.1 ios类成员函数的格式控制 258
9.2.2操作符函数的格式控制 262
9.2.3自定义操作符函数的格式化 263
9.3文件的输入与输出 265
9.3.1文件的打开与关闭 266
9.3.2 if stream、 of stream和fstream类 267
9.3.3文本文件的输入与输出 268
9.3.4二进制文件的输入与输出 271
9.4自定义数据类型的输入与输出 274
9.4.1输出运算符重载 274
9.4.2输入运算符重载 275
9.5本章小结 277
9.6思考与练习题 277
第10章 异常处理 280
10.1异常处理的任务与思想 280
10.1.1传统的异常处理方法 280
10.1.2 C+++异常处理机制 281
10.2 C++异常处理的实现 282
10.2.1异常处理语法 282
10.2.2异常处理接口 286
10.3异常处理中的构造与析构 287
10.4 C++标准异常类 289
10.5本章小结 292
10.6思考与练习题 293
第11章 Visual C+应用简介 294
11.1 Visual C++编程基础 294
11.1.1 Visual C+++的环境介绍 294
11.1.2 Visual C+++的菜单功能 296
11.1.3 Visual C+++的工具栏 300
11.1.4项目和项目工作区 301
11.2 Windows编程概述 302
11.2.1多任务和多线程 302
11.2.2事件驱动原理 303
11.2.3 Windows编程的基本概念 304
11.2.4 GDI简介 306
11.2.5 Windows资源 307
11.2.6常用的数据类型和数据结构 307
11.2.7 Windows标识符的命名方法 309
11.3使用MFC向导创建Windows应用程序 309
11.3.1 MFC类库简介 310
11.3.2 MFC类库的层次结构 310
11.3.3 Windows应用程序类型 314
11.3.4使用AppWizard向导创建MFC应用程序 315
11.4本章小结 321
11.5思考与练习题 321
第12章 MFC典型应用程序设计 322
12.1消息处理机制 322
12.1.1 MFC消息种类 322
12.1.2 MFC消息映射机制 323
12.2应用程序分析 324
12.2.1使用AppWizard向导生成的类和文件 324
12.2.2应用程序的运行机制 326
12.3输入与输出处理程序 328
12.3.1文本输出程序 328
12.3.2键盘输入处理程序 332
12.3.3鼠标处理程序 336
12.4菜单应用程序设计 339
12.4.1菜单简介 340
12.4.2菜单资源编辑器 340
12.4.3菜单应用实例 341
12.5工具栏应用程序设计 348
12.5.1工具栏简介 348
12.5.2使用资源编辑器创建工具栏 348
12.5.3工具栏应用实例 350
12.6状态栏应用程序设计 351
12.6.1状态栏的实现 351
12.6.2状态栏应用实例 351
12.7对话框应用程序设计 356
12.7.1对话框的分类 356
12.7.2常用对话框类 356
12.7.3对话框的常用函数 357
12.7.4对话框应用实例 358
12.8控件应用程序设计 365
12.8.1控件简介 365
12.8.2常用控件类 366
12.8.3创建控件 366
12.8.4控件应用实例 367
12.9数据库应用程序设计 373
12.9.1 ADO技术 374
12.9.2 ODBC技术 374
12.9.3数据库应用程序实例 375
12.10数据库应用程序功能扩展 386
12.10.1添加记录 387
12.10.2删除记录 388
12.10.3修改记录 389
12.11本章小结 390
12.12思考与练习题 390
附录A Visual C++程序的调试方法 391
附录B ASCII码字符集 396
参考文献 397