第1章 绪论 1
1.1 编程语言的发展 1
1.2 C++语言简介 2
1.3 面向对象的程序设计方法 2
1.4 第一个C++程序 4
1.5 小结 5
习题 6
第2章 基本数据类型和运算符 7
2.1 基本概念 7
2.1.1 程序实例 7
2.1.2 C++字符集 8
2.1.3 C++关键字 8
2.1.4 标识符 8
2.1.5 程序注释 9
2.2 基本数据类型 9
2.2.1 整数类型 9
2.2.2 浮点类型 9
2.2.3 字符类型 9
2.2.4 布尔类型 10
2.3 变量和常量 10
2.3.1 变量 10
2.3.2 常量 11
2.4 简单的输入和输出 13
2.5 C++运算符和表达式 14
2.5.1 赋值运算符和赋值表达式 14
2.5.2 算术运算符和算术表达式 15
2.5.3 关系运算符和关系表达式 16
2.5.4 逻辑运算符和逻辑表达式 16
2.5.5 位运算符 17
2.5.6 逗号运算符和逗号表达式 19
2.5.7 条件运算符和条件表达式 19
2.5.8 sizeof运算符 19
2.5.9 其他运算符 19
2.6 数据类型转换 20
2.7 小结 21
习题 22
第3章 控制语句 24
3.1 选择结构 24
3.1.1 if-else选择语句 24
3.1.2 嵌套的if-else语句 25
3.1.3 if-else if语句 25
3.1.4 switch语句 26
3.2 循环结构 28
3.2.1 while循环语句 28
3.2.2 do-while循环语句 29
3.2.3 for循环语句 30
3.2.4 嵌套的循环语句 31
3.3 其他流控制语句 32
3.3.1 break语句和continue语句 32
3.3.2 goto语句 33
3.4 小结 33
习题 33
第4章 复合数据类型 35
4.1 数组 35
4.1.1 数组的定义和初始化 35
4.1.2 使用数组 36
4.1.3 字符数组和字符串 38
4.2 指针和引用 39
4.2.1 定义和使用指针 39
4.2.2 指针和数组 41
4.2.3 数组指针和指针数组 43
4.2.4 使用操作符new和delete进行动态存储分配 45
4.2.5 引用的定义和使用 46
4.3 枚举和结构 48
4.3.1 枚举 48
4.3.2 结构 50
4.4 小结 51
习题 52
第5章 函数 54
5.1 定义和调用函数 54
5.1.1 函数的定义 54
5.1.2 函数的调用 55
5.1.3 函数原型 56
5.2 传递参数 59
5.2.1 传值传递 59
5.2.2 引用传递 60
5.3 局部变量和全局变量 61
5.4 函数调用的实现 63
5.5 内联函数 64
5.6 递归函数 65
5.7 参数的默认值 69
5.8 指针函数和函数指针 70
5.8.1 指针函数 70
5.8.2 函数指针 72
5.9 函数重载 73
5.10 函数模板 75
5.11 小结 77
习题 78
第6章 类和对象(上) 80
6.1 面向对象程序设计概述 80
6.2 创建类 81
6.2.1 定义类 81
6.2.2 类的实现 82
6.3 创建和使用对象 84
6.4 类成员的访问控制 87
6.4.1 类的公有成员 88
6.4.2 类的私有成员 88
6.4.3 类的保护成员 89
6.5 内联的成员函数 93
6.6 构造函数 93
6.6.1 定义类的构造函数 94
6.6.2 默认的构造函数 95
6.6.3 带默认参数值的构造函数 96
6.7 拷贝构造函数 97
6.7.1 定义类的拷贝构造函数 98
6.7.2 默认的拷贝构造函数与对象的浅拷贝问题 100
6.8 析构函数 103
6.9 小结 106
习题 107
第7章 类和对象(下) 108
7.1 类的静态成员 108
7.1.1 静态数据成员 108
7.1.2 静态函数成员 110
7.2 对象指针 112
7.3 动态创建 114
7.3.1 动态创建对象 114
7.3.2 动态创建对象数组 115
7.4 类作用域 117
7.4.1 类成员具有类作用域 117
7.4.2 具有类作用域的数据成员被局部变量屏蔽 118
7.5 this指针 118
7.6 类的组合 122
7.7 常对象和类的常成员 128
7.7.1 常对象 128
7.7.2 常数据成员 129
7.7.3 const成员函数 129
7.8 类模板 130
7.9 友元 136
7.9.1 友元函数 136
7.9.2 友元类 138
7.10 string类 141
7.10.1 构造字符串 141
7.10.2 常用的字符串操作 142
7.11 小结 144
习题 145
第8章 类的继承 147
8.1 基类和派生类 147
8.2 定义派生类 148
8.3 继承方式与访问权限 149
8.4 构造派生类对象 151
8.4.1 派生类对象的结构 152
8.4.2 派生类的构造函数 152
8.5 成员覆盖 157
8.6 实例学习——图形类家族 159
8.7 多重继承 163
8.7.1 多重继承简介 163
8.7.2 多重继承引发的二义性问题 167
8.8 虚基类 172
8.9 对象类型转换 176
8.10 小结 178
习题 178
第9章 多态 183
9.1 什么是多态 183
9.2 虚函数和动态绑定 184
9.3 纯虚函数和抽象类 192
9.4 编译期多态——运算符重载 193
9.4.1 什么是运算符重载 193
9.4.2 用类的成员函数实现运算符重载 194
9.4.3 用类的友元函数实现运算符重载 199
9.4.4 重载赋值运算符= 202
9.5 运行时类型识别(RTTI) 204
9.5.1 dynamic_cast操作符 205
9.5.2 typeid操作符和type_info类 206
9.6 小结 210
习题 210
第10章 程序结构、预处理和命名空间 212
10.1 多文件结构的源程序 212
10.2 文件间的信息共享 217
10.2.1 头文件 217
10.2.2 关键字extern 217
10.2.3 使用关键字static避免同名冲突 218
10.2.4 函数的声明 219
10.2.5 类的声明 219
10.3 预处理 220
10.3.1 #include指令 220
10.3.2 #define指令 221
10.3.3 条件预处理指令 221
10.3.4 使用条件预处理指令避免重复包含 222
10.4 命名空间 223
10.5 小结 224
习题 225
第11章 输入和输出 226
11.1 什么是输入/输出流 226
11.2 输入/输出流类 227
11.2.1 预定义的流对象 227
11.2.2 插入运算符和提取运算符 228
11.2.3 格式化标志和设置格式化标志的函数 230
11.2.4 I/O格式操作符 231
11.2.5 控制输入/输出格式的函数 232
11.2.6 常用的I/O函数 234
11.3 磁盘文件的输入/输出 236
11.3.1 打开文件 236
11.3.2 数据的存储格式和文件的打开模式 237
11.3.3 文件输入/输出 238
11.3.4 文件指针 242
11.4 小结 243
习题 244
第12章 异常处理 245
12.1 抛出异常 245
12.2 捕获和处理异常 245
12.3 异常的传递途径 247
12.4 异常类 248
12.5 小结 251
习题 251
第13章 Windows编程基础 252
13.1 事件驱动机制和Windows SDK编程 252
13.2 MFC 256
13.2.1 一个简单的MFC应用程序 256
13.2.2 MFC简介 258
13.2.3 MFC程序结构分析 263
13.3 消息映射机制 265
13.3.1 Windows消息 265
13.3.2 MFC消息映射机制 267
13.4 Windows程序实例 273
13.5 小结 281
习题 281
附录A 282
参考文献 288