第1章 程序设计方法和C++语言概述 1
1.1 程序编写过程 1
1.2 面向过程程序设计方法 2
1.3 面向对象程序设计方法 3
1.4 C++语言的发展 5
1.5 C++语言程序的开发过程 7
1.6 一个简单的程序 7
本章小结 10
习题 10
第2章 数据类型、运算符和表达式 11
2.1 数据类型 11
2.2 常量和变量 13
2.2.1 C++的符号系统 13
2.2.2 C++的常量 14
2.2.3 C++的变量 17
2.3 运算符和表达式 18
2.3.1 算术运算符和算术表达式 18
2.3.2 赋值运算符和赋值表达式 20
2.3.3 关系运算符和关系表达式 21
2.3.4 逻辑运算符和逻辑表达式 22
2.3.5 位运算符和位运算表达式 24
2.3.6 条件运算符和条件表达式 27
2.3.7 其他运算符 27
2.4 数据类型转换 29
2.4.1 自动类型转换 29
2.4.2 强制类型转换 30
2.4.3 赋值表达式的类型转换 31
2.5 基本输入/输出 31
2.5.1 标准输入流和标准输出流 31
2.5.2 I/O流的格式控制 32
2.6 C++的语句类型 34
2.6.1 说明性语句 35
2.6.2 可执行语句 35
本章小结 37
习题 38
第3章 C++控制语句 40
3.1 顺序结构程序设计 40
3.2 分支结构程序设计 42
3.2.1 if分支语句 42
3.2.2 if语句的嵌套 48
3.2.3 switch语句 51
3.3 循环结构程序设计 53
3.3.1 while语句 53
3.3.2 do...while语句 55
3.3.3 for语句 58
3.3.4 3种循环语句的比较 61
3.3.5 循环嵌套 62
3.3.6 break和continue语句 63
3.4 程序举例 66
本章小结 68
习题 69
第4章 数组 72
4.1 概述 71
4.2 一维数组 72
4.2.1 一维数组定义和初始化 72
4.2.2 一维数组元素的引用 74
4.3 二维数组 75
4.3.1 二维数组定义和初始化 75
4.3.2 二维数组元素的引用 76
4.4 字符数组与字符串 77
4.4.1 字符数组的定义和初始化 77
4.4.2 字符数组的引用 78
4.5 数组应用举例 80
4.5.1 一维数组应用举例 80
4.5.2 二维数组应用举例 81
4.5.3 字符数组应用举例 83
4.5.4 综合应用举例 84
本章小结 85
习题 85
第5章 函数与预处理 91
5.1 概述 91
5.1.1 函数简介 91
5.1.2 函数的种类 92
5.2 函数定义及调用 93
5.2.1 函数的定义 93
5.2.2 函数的调用 95
5.2.3 函数参数传递与返回值 96
5.2.4 函数的嵌套调用 100
5.2.5 函数原型声明 102
5.3 C++中的特殊函数 103
5.3.1 重载函数 103
5.3.2 内联函数 105
5.3.3 具有默认参数值的函数 106
5.4 函数模板 107
5.4.1 函数模板的定义 107
5.4.2 重载函数模板 108
5.5 局部变量和全局变量 109
5.5.1 局部作用域和局部变量 109
5.5.2 全局作用域和全局变量 111
5.6 变量的生存期和存储类别 113
5.6.1 变量的生存期 113
5.6.2 变量的存储类别 113
5.7 编译预处理 117
5.7.1 宏定义 118
5.7.2 文件包含 120
5.7.3 条件编译 121
本章小结 121
习题 121
第6章 指针和引用 127
6.1 指针的概念 127
6.1.1 指针和指针变量 127
6.1.2 指针变量的定义 127
6.1.3 指针的基本运算 128
6.1.4 指针作为函数参数 132
6.2 指针与数组 135
6.2.1 指针与一维数组 135
6.2.2 指针与二维数组 138
6.2.3 指向字符串的指针变量 140
6.2.4 指针数组 143
6.2.5 多级指针 146
6.3 指针和函数 147
6.3.1 指针型函数 147
6.3.2 用函数指针调用函数 148
6.3.3 用指向函数的指针作函数参数 150
6.3.4 带参数的main()函数 151
6.4 动态存储分配 152
6.4.1 内存的动态分配 152
6.4.2 动态内存分配操作符 153
6.5 引用 154
6.5.1 引用的概念 154
6.5.2 引用的操作 155
6.5.3 不能被定义引用的情况 156
6.5.4 函数参数中引用的传递 157
6.5.5 用引用返回多个值 158
6.5.6 用函数返回引用 159
6.5.7 const引用 159
本章小结 161
习题 162
第7章 其他自定义数据类型 168
7.1 结构体类型 168
7.1.1 结构体类型的定义 168
7.1.2 结构体类型变量的定义及其初始化 169
7.1.3 结构体类型的使用 171
7.2 枚举类型 175
7.3 共用体类型 178
本章小结 180
习题 181
第8章 类与对象 185
8.1 类的概念 185
8.2 类的定义 186
8.3 对象的定义 187
8.4 类的成员函数 188
8.5 类的访问属性 191
8.6 对象的使用 192
8.6.1 对象指针 194
8.6.2 对象引用 194
8.6.3 this指针 194
8.6.4 对象数组 195
8.6.5 普通对象做函数参数 196
8.6.6 对象指针做函数参数 197
8.6.7 对象引用做函数参数 199
8.7 构造函数 201
8.8 析构函数 202
8.9 拷贝构造函数 204
8.10 浅拷贝和深拷贝 205
8.11 静态成员 206
8.11.1 静态成员数据 206
8.11.2 静态成员函数 208
8.12 友元 210
8.12.1 友元函数 210
8.12.2 友元类 211
8.13 常对象 212
8.14 常成员 212
8.14.1 常成员数据 213
8.14.2 常成员函数 213
8.15 组合关系 214
8.16 类模板 216
本章小结 218
习题 218
第9章 继承与派生 223
9.1 继承和派生的概念 223
9.2 继承的实现 224
9.2.1 派生类的定义 224
9.2.2 派生类的构成 226
9.2.3 继承的访问控制 228
9.3 派生类的构造函数和析构函数 230
9.3.1 派生类的构造函数 230
9.3.2 派生类的析构函数 232
9.4 多继承中的二义性与虚函数 233
9.4.1 多继承中的二义性 233
9.4.2 虚基类 235
本章小结 236
习题 237
第10章 多态性与虚函数 242
10.1 多态性 242
10.1.1 多态性的概念 242
10.1.2 多态的实现——联编 243
10.2 继承中的静态联编 243
10.2.1 派生类对象调用同名函数 243
10.2.2 通过基类指针调用同名函数 245
10.3 虚函数和运行时的多态 247
10.3.1 虚函数 247
10.3.2 虚函数的使用 248
10.3.3 虚析构函数 249
10.4 纯虚函数和抽象类 251
10.4.1 纯虚函数 251
10.4.2 抽象类 252
10.4.3 应用实例 252
本章小结 255
习题 255
第11章 运算符重载 260
11.1 运算符重载的概念 260
11.2 运算符重载的规则和语法 261
11.3 “++”、“--”运算符的重载 265
11.4 赋值运算符“=”的重载 268
11.5 插入提取运算符“<<”“>>”的重载 271
11.6 类型转换运算符的重载 272
本章小结 274
习题 274
第12章 标准模板库 275
12.1 标准模板库概述 275
12.2 容器 276
12.2.1 向量 276
12.2.2 列表 279
12.2.3 栈 280
12.2.4 集合 282
12.2.5 映射 284
本章小结 285
习题 285
第13章 输入/输出流 287
13.1 流 287
13.2 文件流 288
13.2.1 数据的层次 288
13.2.2 文件和流 290
13.2.3 文件操作 290
13.3 顺序文件操作 294
13.3.1 建立顺序文件 294
13.3.2 读取顺序访问文件中的数据 297
13.3.3 更新顺序访问文件 298
13.4 随机访问文件 299
13.4.1 建立随机访问文件 299
13.4.2 向随机访问文件中随机地写入数据 301
13.4.3 从随机访问文件中顺序地读取数据 302
本章小结 304
习题 305
第14章 异常处理 308
14.1 程序的出错处理 308
14.2 异常及异常处理 310
14.2.1 异常及其特点 310
14.2.2 异常处理方法 310
14.3 C++异常处理机制 311
14.3.1 C++异常处理的基本过程 311
14.3.2 C++异常处理的其他形式 315
14.4 用exception类处理异常 319
14.4.1 C++的exception类 319
14.4.2 用户自定义类的对象传递异常 321
本章小结 324
习题 324
附录A C++语言中运算符的优先级和结合性 327
附录B ASCII码表 329
附录C C++常用函数 330
参考文献 334