第1章 C++概述 1
1.1 C++语言简介 1
1.1.1 程序 1
1.1.2 程序设计语言 1
1.1.3 程序设计 2
1.1.4 C++语言的发展及举例 3
1.2 面向过程和面向对象编程概述 4
1.2.1 面向过程程序设计 4
1.2.2 面向对象程序设计 6
1.2.3 泛型程序设计 7
1.3 面向过程和面向对象的程序设计方法比较 8
1.4 C++程序开发过程及调试 10
1.4.1 C++程序开发过程 10
1.4.2 Visual C++6.0调试C++程序的操作过程 11
本章小结 14
习题1 15
第2章 C++对C基本语法的扩充 16
2.1 C++的输入输出 16
2.1.1 输出流对象 16
2.1.2 输入流对象 18
2.1.3 字符数组的输入和输出 21
2.2 重载函数 24
2.2.1 为什么要进行函数重载 24
2.2.2 使用函数重载的条件 25
2.2.3 重载函数的使用方法 25
2.2.4 函数的默认参数 25
2.3 函数模板与模板函数 27
2.4 内联函数 28
2.5 内存的动态分配与释放 29
2.5.1 new运算符的用法 30
2.5.2 delete运算符的用法 30
2.6 引用 31
2.6.1 引用的概念 31
2.6.2 使用引用的注意事项 32
2.6.3 引用作为函数参数 33
2.6.4 函数返回引用 36
2.7 const修饰符 37
2.7.1 用const定义常量 37
2.7.2 用const来限制指针 38
2.7.3 const函数 39
2.8 名字空间 40
2.8.1 名字空间的作用 40
2.8.2 名字空间的使用 41
2.8.3 名字空间综合举例 43
2.9 sizeof运算 47
2.10 程序设计举例 48
本章小结 56
习题2 57
第3章 类和对象 62
3.1 类的定义和使用 62
3.1.1 类定义格式 62
3.1.2 成员函数的定义位置 63
3.1.3 内联成员函数 65
3.1.4 常量成员函数 66
3.2 对象的创建和使用 67
3.2.1 对象的种类和创建 67
3.2.2 对象作为函数的参数和返回值 68
3.2.3 this指针 69
3.3 构造函数的概念和使用 71
3.3.1 为什么引入构造函数 71
3.3.2 重载构造函数 73
3.3.3 默认参数的构造函数 75
3.3.4 拷贝构造函数 76
3.3.5 成员初始化参数表 78
3.4 析构函数的概念和使用 81
3.4.1 为什么引入析构函数 81
3.4.2 析构函数的使用 81
3.5 堆对象的概念和使用 82
3.5.1 创建和删除单个堆对象的方法 82
3.5.2 创建和删除堆对象数组的方法 84
3.6 静态数据成员和静态成员函数 85
3.6.1 为什么需要静态数据成员 85
3.6.2 静态数据成员的访问和初始化 86
3.6.3 静态成员函数的概念和使用 88
3.7 友元函数和友元类 89
3.7.1 友元的概念和使用 89
3.7.2 使用友元的注意事项 93
3.8 程序设计举例 93
本章小结 97
习题3 97
第4章 继承与派生 100
4.1 为什么要引入继承的概念 100
4.1.1 继承与派生问题举例 101
4.1.2 继承与派生的概念 101
4.2 基类和派生类 101
4.2.1 基类与派生类的概念 101
4.2.2 派生类的定义 101
4.3 派生方式 103
4.3.1 public派生 103
4.3.2 private派生 104
4.3.3 protected派生 106
4.4 不同派生方式之间的区别 106
4.5 派生类的构造函数和析构函数 108
4.5.1 派生类的构造函数 108
4.5.2 基类构造函数的调用方式 108
4.5.3 派生类的析构函数 109
4.6 多继承和虚基类 110
4.6.1 多继承的定义 110
4.6.2 多继承中的构造函数和析构函数 112
4.6.3 二义性与虚基类 113
4.7 程序设计举例 118
本章小结 122
习题4 123
第5章 多态性与虚函数 125
5.1 为什么需要多态性 125
5.1.1 多态性的实现方法 125
5.1.2 静态多态性和动态多态性 126
5.2 对虚函数的限制 131
5.2.1 声明虚函数的限制 131
5.2.2 虚函数的使用限制 132
5.3 在成员函数中调用虚函数 135
5.4 在构造函数中调用虚函数 136
5.5 纯虚函数和抽象类 137
5.6 程序设计举例 139
本章小结 140
习题5 141
第6章 运算符重载 144
6.1 为什么要进行运算符重载 144
6.1.1 运算符重载的例子 144
6.1.2 运算符重载的注意事项 147
6.2 赋值运算符和四则运算符的重载 148
6.3 自增1和自减1运算符重载 150
6.4 关系运算符的重载 152
6.5 算术赋值运算符的重载 153
6.6 下标运算符的重载 155
6.7 插入与抽取运算符的重载 157
6.7.1 插入运算符的重载 157
6.7.2 抽取运算符的重载 158
6.8 类型转换 160
6.8.1 基本类型转换和自定义类型的相互转换 161
6.8.2 自定义类型之间的转换 161
6.9 程序设计举例 165
本章小结 169
习题6 169
第7章 类模板与STL编程 171
7.1 类模板 171
7.1.1 为什么要引进类模板 171
7.1.2 类模板定义格式 171
7.1.3 使用类模板创建对象 173
7.2 STL编程 178
7.2.1 标准模板库STL 178
7.2.2 容器 180
7.2.3 迭代器 207
7.2.4 算法 229
7.2.5 函数对象 238
本章小结 240
习题7 240
第8章 流 244
8.1 C的标准I/O函数的缺陷 244
8.2 I/O流的概念 245
8.3 I/O流类库结构 246
8.4 标准I/O流 246
8.4.1 标准I/O流的类层次 246
8.4.2 预定义流对象 247
8.4.3 预定义的插入类型 247
8.4.4 预定义的抽取类型 248
8.5 用于无格式I/O的ios类成员函数 249
8.6 格式化I/O流 253
8.6.1 使用格式状态标志或调用格式化成员函数 253
8.6.2 使用操纵算子 257
8.7 文件操作 259
8.7.1 文件与文件流概述 259
8.7.2 文件流的类层次 260
8.7.3 文件的打开和关闭 260
8.7.4 文件读写操作举例 262
8.8 随机访问数据文件 266
8.9 程序设计举例 268
本章小结 270
习题8 270
第9章 利用MFC开发Windows应用程序 273
9.1 Windows应用程序的特点与消息驱动机制 273
9.1.1 基于Windows操作系统的应用程序的特点 273
9.1.2 典型的Windows应用程序结构 274
9.1.3 学习MFC的方法 274
9.2 利用MFC AppWizard创建Windows应用程序 275
9.3 MFC应用程序的类和文件 276
9.3.1 类说明 276
9.3.2 文件说明 277
9.4 Windows消息处理 279
9.4.1 利用ClassWizard编制消息处理函数 279
9.4.2 Windows消息 282
9.4.3 消息的发送与接收的基本过程和机制 284
9.5 文档/视图结构 285
9.5.1 视图类 285
9.5.2 文档类 286
9.6 菜单与工具栏 290
9.7 对话框与控件 292
9.7.1 对话框 292
9.7.2 控件 299
9.8 程序设计举例 301
本章小结 311
习题9 311
第10章 数据库编程 313
10.1 数据库访问技术概述 313
10.2 ODBC编程技术 315
10.3 ADO编程技术 321
10.3.1 ADO技术简介 321
10.3.2 ADO对象模型 322
10.3.3 使用ADO对象开发数据库应用程序 323
本章小结 336
习题10 336
第11章 图形绘制 339
11.1 设备环境和设备环境类 339
11.1.1 设备环境 339
11.1.2 图形设备接口 340
11.1.3 设备环境类 341
11.1.4 获取设备环境的方法 343
11.2 坐标映射 343
11.3 常用的图形数据结构和类 345
11.4 绘图工具类 348
11.4.1 使用GDI对象 349
11.4.2 CPen类和CBrush类 350
11.4.3 简单图形的绘制 358
11.4.4 CFont类 367
11.4.5 CBitmap 380
11.4.6 显示位图 382
11.4.7 动画图形的制作 385
本章小结 390
习题11 390
第12章 综合实训 394
12.1 控制台应用程序:商品信息管理系统 394
12.2 MFC应用程序:班级信息管理系统 401
12.3 图形绘制:图像局部放大实现 416
本章小结 421
习题12 421
附录标准ASCII码表 424
参考文献 425