目录 1
第1章 面向对象程序设计概述 1
1.1 计算机程序设计语言的发展 1
1.1.1 机器语言 1
1.1.2 汇编语言 2
1.1.3 高级语言 2
1.1.4 面向对象语言 3
1.2.2 面向对象的方法与结构 4
1.2.1 面向对象方法的产生 4
1.2 面向对象程序设计的基本概念 4
1.2.3 类与对象的概念 5
1.2.4 消息与事件的概念 6
1.3 面向对象程序设计的特点 7
1.3.1 抽象性 7
1.3.2 封装性 8
1.3.3 继承性 8
1.3.4 多态性 9
1.3.5 C++的面向对象特性 10
1.4.1 混合型面向对象语言——C++ 11
1.4 面向对象的程序设计语言 11
1.4.2 Java语言 12
1.4.3 Visual Basic语言 12
1.5 Visual C++概述 13
1.5.1 Visual C++6.0 13
1.5.2 Visual C++.NET 14
1.6 面向对象的软件开发 16
1.6.1 面向对象分析 16
1.6.2 面向对象设计 16
1.6.3 面向对象编程 17
1.7 本章小结 18
1.6.4 面向对象测试 18
1.6.5 面向对象软件维护 18
1.8 思考与练习题 19
第2章 C++程序设计基础 21
2.1 C++语言概述 21
2.1.1 C++的产生 21
2.1.2 C++的特点 22
2.1.3 C++的字符集 22
2.1.4 C++程序的组成 23
2.2.1 基本数据类型 26
2.2 数据类型 26
2.2.2 常量 27
2.2.3 变量 30
2.2.4 符号常量 34
2.3 运算符与表达式 35
2.3.1 表达式 35
2.3.2 运算符及性质 36
2.3.3 运算符的优先级 42
2.3.4 混合运算时数据类型的转换 43
2.4.2 插入运算符和提取运算符 45
2.4 简单的输入与输出 45
2.4.1 I/O流 45
2.4.3 简单的I/O格式 46
2.5 程序的基本控制结构 46
2.5.1 顺序结构 46
2.5.2 选择结构 46
2.5.3 循环结构 52
2.6 自定义数据类型 56
2.6.1 结构类型 56
2.6.2 联合类型 58
2.6.3 枚举类型 60
2.6.4 typedef的应用 62
2.7 本章小结 63
2.8 思考与练习题 64
第3章 函数 66
3.1 函数的定义与使用 66
3.1.1 函数的定义 67
3.1.2 函数的调用 67
3.1.3 函数原型 69
3.2 函数的参数传递 70
3.2.1 传值调用 71
3.2.2 传地址调用 72
3.2.3 引用调用 73
3.3 函数的嵌套与递归调用 74
3.3.1 函数的嵌套调用 74
3.3.2 函数的递归调用 75
3.4 函数的其他问题 78
3.4.1 内联函数 78
3.4.2 函数重载的概念 79
3.4.3 带默认参数的函数 80
3.5 C++的系统函数 82
3.6 作用域与存储类型 83
3.6.1 作用域 83
3.6.2 存储类型 86
3.6.3 生存期 86
3.7 全局变量与局部变量 87
3.7.1 全局变量 87
3.7.2 局部变量 87
3.8 头文件与多文件结构 88
3.8.1 头文件 89
3.8.2 多文件结构 89
3.9 编译预处理 90
3.9.1 宏定义 91
3.9.2 文件包含指令 91
3.9.3 条件编译 91
3.10 本章小结 93
3.11 思考与练习题 93
4.1 类 95
4.1.1 类的定义 95
第4章 类与对象 95
4.1.2 访问控制 97
4.2 成员函数 98
4.2.1 成员函数的定义 98
4.2.2 内联成员函数 99
4.3 对象 100
4.3.1 对象的定义 101
4.3.2 类成员的访问 101
4.4.1 构造函数 104
4.4 构造函数与析构函数 104
4.4.2 析构函数 106
4.4.3 复制构造函数 111
4.4.4 浅复制与深复制 116
4.5 静态成员 120
4.5.1 静态成员的定义与引用 120
4.5.2 静态数据成员 120
4.5.3 静态成员函数 122
4.6 友元 124
4.6.1 友元的作用 124
4.6.2 友元函数 124
4.6.3 友元类 126
4.7 类作用域及对象的生存期 127
4.7.1 类作用域 127
4.7.2 对象的生存期 128
4.8 名空间 129
4.8.1 名空间的定义 129
4.8.2 名空间成员的访问 130
4.8.3 名空间的应用 130
4.9 常类型 132
4.9.1 常引用 132
4.9.2 常对象 133
4.9.3 常对象成员 134
4.10 本章小结 137
4.11 思考与练习题 138
第5章 数组与指针 143
5.1 数组 143
5.1.1 一维数组 143
5.1.2 二维数组 148
5.1.3 对象数组 151
5.2 指针 153
5.2.2 指针变量的定义 154
5.2.1 内存空间的访问方式 154
5.2.3 “*”和“&”运算符 155
5.2.4 指针的赋值 156
5.3 指针运算 157
5.3.1 指针的算术运算 157
5.3.2 指针的关系运算 158
5.4 指针与数组 159
5.4.1 一维数组元素的指针表示 159
5.4.2 二维数组元素的指针表示 161
5.4.3 指针数组 162
5.5 指针与函数 163
5.5.1 指针作为函数参数 163
5.5.2 指针型函数 165
5.5.3 指向函数的指针 166
5.6 指针与字符串 167
5.6.1 使用指针访问字符串 167
5.6.2 字符指针作为函数参数 168
5.7 对象指针 169
5.7.1 对象指针的概念 169
5.7.3 类成员函数的指针 170
5.7.2 类数据成员的指针 170
5.7.4 this指针 172
5.8 动态内存分配 173
5.8.1 new运算符 173
5.8.2 delete运算符 174
5.9 本章小结 176
5.10 思考与练习题 177
6.1.1 继承的层次结构 179
6.1 继承与派生的概念 179
第6章 继承与派生 179
6.1.2 继承的作用 180
6.2 派生类 181
6.2.1 派生类的定义 181
6.2.2 派生类的生成过程 185
6.3 访问权限控制 185
6.3.1 公有继承 186
6.3.2 私有继承 188
6.3.3 保护继承 189
6.4.1 派生类的构造函数 192
6.4 派生类的构造函数和析构函数 192
6.4.2 派生类的析构函数 195
6.5 多继承 196
6.5.1 多继承的定义 196
6.5.2 多继承的构造函数 197
6.5.3 多继承的析构函数 199
6.5.4 虚基类 202
6.6 赋值兼容规则 205
6.7 程序实例 208
6.8 本章小结 213
6.9 思考与练习题 214
第7章 多态性 217
7.1 多态性的实现类型 217
7.2 联编 218
7.2.1 静态联编 218
7.2.2 动态联编 220
7.3 虚函数 220
7.3.1 虚函数的声明 221
7.3.2 虚函数的调用 221
7.3.3 虚析构函数 224
7.4 抽象类 226
7.4.1 纯虚函数的定义 227
7.4.2 抽象类的使用 227
7.5 函数重载 229
7.6 运算符重载 231
7.6.1 运算符重载规则 231
7.6.2 运算符重载为成员函数 232
7.6.3 运算符重载为友元函数 240
7.7 综合设计举例 242
7.9 思考与练习题 246
7.8 本章小结 246
第8章 模板 248
8.1 模板概述 248
8.2 函数模板 249
8.2.1 函数模板的定义 249
8.2.2 函数模板的使用 250
8.2.3 模板函数的生成 252
8.3 类模板 252
8.3.1 类模板的定义 252
8.3.2 类模板的使用 254
8.3.3 类模板的友元 256
8.4 STL简介 259
8.4.1 STL和C++标准库 260
8.4.2 容器 261
8.4.3 算法 262
8.4.4 迭代器 263
8.4.5 函数对象 264
8.5 STL应用实例 265
8.6 本章小结 269
8.7 思考与练习题 269
9.1.1 I/O流的概念 271
第9章 I/O流库 271
9.1 I/O流库的层次结构 271
9.1.2 ios类的层次关系 272
9.1.3 streambuf类的层次关系 273
9.2 输入与输出的格式控制 273
9.2.1 ios类成员函数的格式控制 273
9.2.2 操作符函数的格式控制 277
9.2.3 自定义操作符函数的格式化 278
9.3 文件的输入与输出 280
9.3.1 文件的打开与关闭 281
9.3.2 ifstream、ofstream和fstream类 282
9.3.3 文本文件的输入与输出 283
9.3.4 二进制文件的输入与输出 286
9.4 自定义数据类型的输入与输出 289
9.4.1 输出运算符重载 289
9.4.2 输入运算符重载 291
9.5 本章小结 293
9.6 思考与练习题 293
10.1 异常处理的任务与思想 296
10.1.1 传统的异常处理方法 296
第10章 异常处理 296
10.1.2 C++的异常处理机制 298
10.2 C++异常处理的实现 298
10.2.1 异常处理的语法 299
10.2.2 异常处理接口 302
10.3 异常处理中的构造与析构 303
10.4 C++标准异常类 305
10.5 本章小结 309
10.6 思考与练习题 309
11.1.1 Visual C++环境介绍 311
11.1 Visual C++编程基础 311
第11章 Visual C++应用简介 311
11.1.2 Visual C++的菜单功能 313
11.1.3 Visual C++的工具栏 317
11.1.4 项目和项目工作区 318
11.2 Windows编程概述 319
11.2.1 多任务和多线程 319
11.2.2 事件驱动原理 320
11.2.3 Windows编程的基本概念 320
11.2.5 Windows资源 323
11.2.4 GDI简介 323
11.2.6 常用数据结构 324
11.2.7 Windows标识符的命名方法 326
11.3 用MFC向导创建Windows应用程序 326
11.3.1 MFC类库简介 327
11.3.2 MFC类库的常用类 327
11.3.3 MFC应用程序的类型 331
11.3.4 用AppWizard向导创建MFC应用程序 332
11.4 本章小结 338
11.5 思考与练习题 338
12.1.1 MFC消息的种类 339
第12章 MFC典型应用程序设计 339
12.1 消息处理机制 339
12.1.2 MFC消息的映射机制 340
12.2 应用程序分析 341
12.2.1 AppWizard向导生成的类和文件 342
12.2.2 应用程序的运行机制 343
12.3 输入与输出处理程序 345
12.3.1 文本输出程序 345
12.3.2 键盘输入处理程序 347
12.3.3 鼠标处理程序 351
12.4.2 菜单资源编辑器 355
12.4 菜单应用程序设计 355
12.4.1 菜单简介 355
12.4.3 菜单应用实例 357
12.5 工具栏应用程序设计 364
12.5.1 工具栏简介 364
12.5.2 使用资源编辑器创建工具栏 364
12.5.3 工具栏应用实例 366
12.6 状态栏应用程序设计 367
12.6.1 状态栏的实现 367
12.6.2 状态栏应用实例 368
12.7.1 对话框的分类 372
12.7 对话框应用程序设计 372
12.7.2 常用对话框类 373
12.7.3 对话框的常用函数 374
12.7.4 对话框应用实例 374
12.8 控件应用程序设计 382
12.8.1 控件简介 382
12.8.3 创建控件 383
12.8.4 控件应用实例 383
12.8.2 常用控件类 383
12.9 数据库应用程序设计 390
12.9.1 ODBC技术 390
12.9.2 ADO技术 391
12.9.3 数据库应用实例 391
12.10 本章小结 406
12.11 思考与练习题 407
附录A Visual C++程序的调试方法 408
附录B ASCII码字符集 413
参考文献 414