第1章 绪论 1
1.1 程序设计语言发展概况 1
1.1.1 机器语言和汇编语言 1
1.1.2 高级语言 2
1.2 面向对象程序设计语言基本原理 3
1.2.1 抽象 4
1.2.2 封装性 6
1.2.3 继承性 7
1.2.4 多态性 8
1.2.5 消息传递机制 10
1.3 面向对象程序设计C+++ 11
1.3.1 C++语言特点 11
1.3.2 C++程序架构 13
1.3.3 C++程序开发过程 17
1.3.4 C++语言在商业领域的应用 17
习题1 18
第2章 C++类和对象 19
2.1 类 19
2.1.1 类的定义 19
2.1.2 类成员的访问权限 20
2.1.3 成员函数的实现 24
2.2 类对象 29
2.2.1 构造函数 30
2.2.2 析构函数 39
2.2.3 对象成员的访问 42
2.3 C++输入/输出流对象 64
2.3.1 标准输入/输出流 64
2.3.2 文件输入/输出流 68
2.3.3 输入/输出流应用举例 73
习题2 76
第3章 继承 77
3.1 类的继承与派生 77
3.1.1 继承与派生实例 77
3.1.2 派生类定义 78
3.1.3 继承的级别 81
3.2 继承方式 81
3.2.1 公有继承 82
3.2.2 私有继承 85
3.2.3 保护继承 87
3.2.4 多继承 91
3.3 派生类的构造函数和析构函数 92
3.3.1 构造函数 92
3.3.2 析构函数 95
3.4 虚基类 97
3.4.1 声明一个虚基类 97
3.4.2 虚基类的初始化 102
3.5 聚合类 105
3.5.1 聚合类的概念 105
3.5.2 聚合类中的构造函数 106
3.6 继承应用实例 112
3.6.1 问题描述 112
3.6.2 完整源程序 113
3.6.3 运行结果 120
习题3 122
第4章 多态性 125
4.1 多态性基本概念及其实现方式 125
4.1.1 多态性基本概念 125
4.1.2 多态性的两种实现方式 125
4.2 虚函数 126
4.2.1 虚函数的基本概念及其定义 126
4.2.2 虚函数与重载函数的关系 137
4.2.3 虚函数与函数隐藏和函数覆盖 137
4.2.4 多重继承中的虚函数 141
4.2.5 将析构函数设计为虚函数 147
4.2.6 纯虚函数和抽象类 149
4.2.7 抽象类的程序设计举例 150
4.3 函数重载 155
4.3.1 在同一个类中的成员函数重载 155
4.3.2 全局函数重载 158
4.3.3 函数默认参数及重载二义性 160
4.4 运算符重载 161
4.4.1 运算符的两种重载方式 162
4.4.2 单目和双目运算符的重载 164
4.4.3 几个常用运算符的重载举例 171
4.4.4 运算符重载综合举例 175
习题4 187
第5章 模板 188
5.1 模板的基本概念 188
5.1.1 模板的概念 188
5.1.2 为何需要使用模板 188
5.2 函数模板及模板函数 189
5.2.1 函数模板的定义及生成模板函数 190
5.2.2 重载函数模板 192
5.3 类模板及模板类 197
5.3.1 类模板的定义及生成模板类 199
5.3.2 类模板的派生 203
5.4 模板设计应用实例 204
习题5 210
第6章 C++常见问题 211
6.1 内联函数的使用 211
6.1.1 内联函数引入的原因 211
6.1.2 内联函数的定义 211
6.1.3 内联和非内联函数的选择使用 213
6.2 const的使用 216
6.2.1 const说明值常量 217
6.2.2 const与指针 218
6.2.3 const说明函数参数和返回值 220
6.2.4 类中的const 221
6.3 动态内存管理技术 226
6.3.1 内存的几种分配方式 226
6.3.2 使用new和delete分配和释放动态内存 227
6.3.3 常见的动态内存错误 233
6.3.4 指针和数组的对比 234
6.3.5 利用指针传递内存的方式 236
6.3.6 delete的作用 239
6.4 使用引用 241
6.4.1 引用类型 242
6.4.2 独立引用 243
6.4.3 引用作为函数参数 245
6.4.4 引用返回值 247
6.4.5 常引用 249
6.4.6 引用的应用实例 249
6.5 类型转换 250
6.5.1 构造函数和类型转换函数 250
6.5.2 一个类型转换实例 253
6.6 异常处理 256
6.6.1 C语言的出错处理 257
6.6.2 抛出异常 258
6.6.3 捕获异常 258
6.6.4 处理异常 258
6.6.5 异常的匹配 259
6.6.6 标准异常 259
6.6.7 异常开销 260
6.6.8 含有异常的典型程序设计 260
6.7 命名空间 262
6.7.1 命名空间的意义 262
6.7.2 使用命名空间 262
6.7.3 无名的命名空间 263
6.7.4 一个应用实例 263
习题6 265
第7章 Visual C++编程基础 266
7.1 Windows程序运行机制 266
7.1.1 Windows中的事件驱动与消息循环 266
7.1.2 消息和消息处理 267
7.1.3 消息映像机制 268
7.2 Windows API编程 268
7.2.1 API和SDK 268
7.2.2 Windows API应用程序的组成 269
7.2.3 API程序实例 271
7.3 MFC编程 277
7.3.1 MFC简介 277
7.3.2 MFC的主要类 278
7.3.3 MFC的消息与消息处理方法 281
7.3.4 Appwizard与Class Wizard 285
习题7 299
第8章 对话框、常用消息、菜单和工具栏 300
8.1 对话框 300
8.1.1 对话框基本概念 300
8.1.2 常用控件 300
8.1.3 应用实例 312
8.2 常用消息 318
8.2.1 键盘消息及键盘消息的处理 318
8.2.2 鼠标消息及鼠标消息的处理 329
8.2.3 控件常用消息 339
8.3 菜单和工具栏 340
8.3.1 菜单 340
8.3.2 工具栏 343
8.3.3 综合实例 344
习题8 352
第9章 单文档界面和多文档界面 353
9.1 文档对象和视图对象 353
9.1.1 文档对象 353
9.1.2 视图对象 353
9.1.3 文档和视图的关系 353
9.2 单文档界面 353
9.2.1 单文档界面简介 353
9.2.2 单文档界面实例 354
9.3 多文档界面 357
9.3.1 多文档界面简介 357
9.3.2 多文档界面简单实例 357
习题9 360
第10章 图形设备接口 361
10.1 CDC类 361
10.1.1 CDC类的绘图函数 361
10.1.2 CPaintDC类 362
10.1.3 CClientDC类 364
10.1.4 CWindowDC类 365
10.2 图形对象 365
10.2.1 CPen类 366
10.2.2 CBrush类 367
10.2.3 CFont类 369
10.3 应用CDC实例 373
习题10 383
附录 C++编程风格指导 384
参考文献 398