目录 1
前言 1
第一部分 面向过程的程序设计 1
第1章 C++概述 1
1.1 计算机语言与程序 1
1.1.1 机器语言与程序 1
1.1.2 汇编语言与程序 1
1.2 从C到C++ 2
1.1.3 高级语言与程序 2
1.3 程序设计方法 3
1.3.1 结构化程序设计方法 3
1.3.2 面向对象的程序设计方法 3
1.4 简单的C++程序介绍 4
1.5 程序开发的步骤 5
习题1 5
2.2 C++的基本数据类型 7
2.1.2 标识符 7
2.1 保留字和标识符 7
2.1.1 保留字 7
第2章 数据类型、运算符和表达式 7
2.3 常量和变量 9
2.3.1 常量 9
2.3.2 符号常量 10
2.3.3 变量 11
2.4 基本运算符和表达式 11
2.4.1 C++运算符及表达式简介 11
2.4.2 算术运算符和算术表达式 12
2.4.3 运算优先级和结合性 12
2.4.4 关系运算符和关系表达式 13
2.4.5 逻辑运算符和逻辑表达式 13
2.4.6 位运算符和位运算表达式 13
2.4.7 自增、自减运算符和表达式 15
2.4.8 赋值运算符和赋值表达式 15
2.4.11 逻辑表达式运算优化时的副作用 16
2.4.9 逗号运算符和逗号表达式 16
2.4.10 sizeof()运算符和表达式 16
2.5 类型转换 17
2.5.1 赋值时的自动类型转换 17
2.5.2 各种类型运算量混合运算时的自动类型转换 18
2.5.3 强制类型转换 19
习题2 19
第3章 简单的输入/输出 20
3.1 传统的输入/输出函数实现方法 20
3.2 cin 21
3.2.1 输入十六进制或者八进制数据 23
3.2.2 输入字符数据 24
3.3 cout 26
3.3.1 输出八进制数、十六进制数和用科学计数法表示的数 28
3.3.2 输出字符或字符串 29
3.4 总结 29
习题3 30
4.1.1 算法的作用和类别 31
第4章 C++的流程控制 31
4.1 算法概述 31
4.1.2 算法的设计原则 32
4.1.3 算法的表示工具 33
4.1.4 结构化程序设计中基本结构的表示 34
4.2 C++程序的结构和语句 36
4.3 选择结构语句的使用 38
4.3.1 if语句 38
4.3.2 if语句的嵌套使用 41
4.3.3 条件运算符 42
4.3.4 开关语句 43
4.4 循环结构语句的使用 46
4.4.1 goto语句及标号的使用 46
4.4.2 while语句 47
4.4.3 for语句 47
4.4.4 do-while语句 49
4.4.5 break语句和continue语句 50
4.4.6 循环的嵌套 51
4.5 控制语句的应用举例 52
习题4 57
第5章 函数 58
5.1 概述 58
5.2 函数的定义与调用 58
5.2.1 函数的定义 58
5.2.2 函数的调用 60
5.2.3 函数的参数 62
5.3 函数的原型说明 63
5.4 函数的嵌套调用和递归调用 64
5.4.1 函数的嵌套调用 64
5.4.2 函数的递归调用 68
5.5 内联函数 71
5.6.1 参数类型不同的重载函数 72
5.6.2 参数个数不同的重载函数 72
5.6 函数重载 72
5.7 使用C++系统函数 73
5.8 作用域和存储类别 74
5.8.1 作用域 74
5.8.2 存储类别 77
5.9 程序的多文件组织 82
5.9.1 内部函数和外部函数 82
5.9.2 多文件组织的编译和连接 83
习题5 84
第6章 编译预处理 85
6.1 宏定义 85
6.1.1 不带参数的宏定义 85
6.1.2 带参数的宏定义 87
6.2 “文件包含”处理 89
6.3 条件编译(一) 90
习题6 92
7.1.1 一维数组的定义及使用 93
7.1 数组的定义及应用 93
第7章 数组 93
7.1.2 一维数组做函数参数 96
7.1.3 多维数组的定义及使用 105
7.1.4 二维数组名用做函数参数 107
7.2 字符数组的定义及应用 111
7.2.1 字符数组的定义 111
7.2.2 字符数组的初始化 112
7.2.3 字符数组的使用 112
7.2.4 字符串和字符串结束标志 112
7.2.5 字符数组的输入/输出 113
7.2.6 字符串处理函数 115
7.2.7 字符数组应用举例 117
习题7 119
第8章 结构体、共用体和枚举类型 121
8.1 结构体的定义及应用 121
8.1.1 结构体类型的定义 121
8.1.2 结构体类型变量的定义 122
8.1.3 结构体类型变量及其成员的引用 123
8.1.4 结构体数组 126
8.2 共用体的定义及应用 129
8.2.1 共用体类型及其变量的定义 129
8.2.2 共用体类型变量的引用 129
8.2.3 共用体数据类型的特点 130
8.3.3 枚举类型变量的使用 131
8.3.2 枚举类型变量的定义 131
8.3.1 枚举类型的定义 131
8.3 枚举类型 131
习题8 133
第9章 指针和引用 135
9.1 指针和指针变量 135
9.1.1 指针的概念 135
9.1.2 指针变量的定义 135
9.1.3 有关指针的运算符 和 135
9.1.5 直接访问和间接访问 136
9.1.4 指针变量的初始化 136
9.1.6 地址值的输出 138
9.2 指针做函数参数 139
9.2.1 基本类型量做函数参数 139
9.2.2 指针变量做函数参数 140
9.2.3 从被调函数中返回信息的几种方法 141
9.3 指针和指向数组的指针 142
9.3.1 指针和一维数组 142
9.3.2 一维数组元素指针做函数参数 145
9.3.3 指针和字符串 148
9.3.4 多维数组指针(二维数组) 151
9.4 指针数组 155
9.4.1 指针数组的定义和使用 155
9.4.2 使用指针数组处理二维数组 155
9.4.3 利用字符指针数组处理字符串 156
9.4.4 指针数组做main函数的参数 158
9.6.1 函数指针 159
9.6 指针和函数 159
9.5 指向指针的指针 159
9.6.2 返回指针值的函数(指针函数) 162
9.7 指针小结 162
9.8 引用和其他类型的指针 163
9.8.1 引用类型变量的说明及使用 163
9.8.2 引用和函数 164
9.8.3 const类型量 165
9.9.1 new和delete运算符 167
9.9 存储空间的动态分配和释放 167
9.9.2 使用new和delete运算符的注意事项 168
9.10 链表及其应用 169
9.10.1 结构体及指针 169
9.10.2 链表概念的引入 170
9.10.3 有关链表的算法 171
习题9 176
10.1.2 类和对象的定义形式 179
10.1.1 从结构体到类 179
第10章 类和对象 179
10.1 类和对象的定义 179
第二部分 面向对象的程序设计 179
10.1.3 对象成员的访问 180
10.1.4 成员函数的定义 181
10.1.5 对象的存储空间 183
10.1.6 定义类和对象的有关说明 183
10.2 初始化对象、撤销对象 185
10.2.1 构造函数和析构函数 185
10.2.2 缺省构造函数和缺省析构函数 190
10.2.3 拷贝构造函数和缺省拷贝构造函数 191
10.2.4 拷贝构造函数的调用时机 193
10.2.5 利用构造函数进行类型转换 195
10.3 成员函数的特性 196
10.3.1 内联函数和外联函数 196
10.3.2 成员函数的重载 197
10.4 构造函数和对象成员 199
10.5 this指针 201
习题10 202
第11章 类和对象的其他特性 211
11.1 静态成员 211
11.1.1 静态数据成员 211
11.1.2 静态成员函数 212
11.2 友元 213
11.2.1 友元函数 213
11.2.2 一个类的成员函数可作为另一个类的友元函数 215
11.2.3 友元类 216
习题11 216
第12章 继承和派生 218
12.1 继承的基本概念 218
12.2 单一继承 218
12.2.1 公有继承(派生) 219
12.2.2 私有继承(派生) 222
12.3 多重继承 223
12.2.3 保护继承(派生) 223
12.2.4 private成员和protected成员的区别 223
12.4 基类成员的初始化 225
12.4.1 基类的构造函数和析构函数的调用顺序 225
12.4.2 对象成员构造函数和析构函数的调用顺序 226
12.5 二义性和支配规则 228
12.5.1 二义性(访问冲突) 228
12.5.2 支配规则 231
12.6 虚基类 232
12.7 访问基类成员和访问对象成员的成员 235
12.7.1 访问对象成员的成员 235
12.7.2 访问基类成员 236
12.8 赋值兼容 237
习题12 238
第13章 多态性 244
13.1 函数重载 244
13.2.1 运算符重载的几点说明 245
13.2 运算符重载 245
13.2.2 运算符重载的两种方式 246
13.2.3 类型转换函数——将本类对象转换成其他类对象 258
13.2.4 其他运算符的重载 259
13.2.5 字符串类 269
13.3 静态联编 275
13.4 动态联编和虚函数 276
13.4.1 虚函数的定义和使用 276
13.4.2 虚析构函数 280
13.5 纯虚函数和抽象类 282
习题13 290
第14章 输入/输出流 296
14.1 输入/输出基本概念 296
14.1.1 输入/输出流 296
14.1.2 文本流、二进制流和数据文件 296
14.1.3 缓冲 296
14.2.1 基本输入/输出流类体系 297
14.2 输入/输出流类体系 297
14.2.2 用运算符重载实现标准设备的输入/输出 298
14.2.3 缺省的输入/输出格式 299
14.3 输入/输出格式控制 301
14.3.1 使用成员函数进行格式控制 301
14.3.2 使用操纵算子进行格式控制 305
14.4 使用成员函数实现输入/输出 307
14.4.1 输出函数 308
14.4.2 输入函数 308
14.5 重载插入和提取运算符 311
14.6 文件流类 315
14.6.1 文件流类体系 315
14.6.2 文件的打开和关闭 315
14.6.3 文本文件的读写 318
14.6.4 二进制文件的读写 323
14.7 文件的随机访问 325
14.8 输入/输出流的出错处理 327
习题14 329
第15章 模板 331
15.1 概述 331
15.2 函数模板 332
15.2.1 定义函数模板 333
15.2.2 模板函数的重载 336
15.2.3 函数模板的重载 338
15.2.4 多重数据类型参数的模板函数 339
15.3.1 定义类模板 341
15.3 类模板 341
15.3.2 类模板的友元函数 346
15.3.3 类模板的特殊处理 349
15.4 总结 350
习题15 351
附录A ASCII码表 352
附录B 常用库函数 353
参考文献 356