第1章 面向对象和C++语言概述 1
1.1 计算机语言发展概述 1
1.1.1 程序和程序设计语言 1
1.1.2 结构化程序设计 2
1.1.3 面向对象程序设计 3
1.2 面向对象程序设计思想 3
1.2.1 面向对象方法是一种认知方法 3
1.2.2 面向对象与面向过程语言的比较 4
1.2.3 面向对象方法与软件的集成 5
1.2.4 面向对象程序设计的特点 5
1.3 对象的相互关系及其特性 8
1.3.1 对象的属性 9
1.3.2 对象的相互关系 9
1.3.3 资源的可重用性 10
1.3.4 功能的可扩展性 10
1.3.5 系统的可管理性 11
1.4 面向对象系统的开发过程 11
1.4.1 面向对象系统的分析方法 11
1.4.2 面向对象系统的设计方法 12
1.4.3 面向对象系统的实现方法 12
1.5 C++语言的特点及程序的开发过程 12
1.5.1 C++语言的特点 13
1.5.2 C++程序的开发过程 14
1.6 C++程序的结构 14
1.6.1 简单的C++程序 14
1.6.2 C++程序的基本结构 15
1.6.3 C++程序的书写格式和注释 16
1.7 Visual C++6.0开发环境 17
1.7.1 Visual C++6.0集成开发环境简介 17
1.7.2 Visual C++6.0程序的开发流程 18
1.8 本章小结 23
习题1 24
第2章 数据类型和简单输入输出方法 26
2.1 C++语言的基本词法 26
2.1.1 C++的字符集 26
2.1.2 C++的保留字 26
2.1.3 C++的标识符 27
2.2 整型数据、布尔型和void 27
2.2.1 整型常量 28
2.2.2 整型变量 29
2.2.3 布尔型和void型 31
2.3 字符型数据 32
2.3.1 字符型常量 32
2.3.2 字符型变量 32
2.3.3 字符串常量 33
2.3.4 换码序列 34
2.3.5 符号常量和常数型变量 35
2.4 实型数据 36
2.4.1 单精度型常量和变量 36
2.4.2 双精度型常量和变量 37
2.4.3 长双精度型常量和变量 38
2.5 运算符的优先级和结合性 38
2.6 数据类型的转换 38
2.6.1 数据类型的自动转换 39
2.6.2 数据类型的强制转换 40
2.6.3 变量的初始化 41
2.7 数据的输出、输入方法 42
2.7.1 数据的输出 42
2.7.2 数据的输入 43
2.7.3 简单的I/O格式控制 43
2.8 本章小结 46
习题2 46
第3章 运算符和表达式 49
3.1 初等表达式、赋值运算符及表达式 49
3.1.1 初等表达式 49
3.1.2 赋值运算符及其表达式 50
3.2 算术、关系运算符及其表达式 51
3.2.1 算术运算符及其表达式 51
3.2.2 关系运算符及其表达式 53
3.3 逻辑、位逻辑运算符及其表达式 55
3.3.1 逻辑运算符及其表达式 55
3.3.2 位逻辑运算符及其表达式 58
3.3.3 移位运算符及表达式 60
3.4 增1、减1、自反运算符及其表达式 63
3.4.1 增1、减1运算符及其表达式 63
3.4.2 自反运算符及其表达式 65
3.5 逗号、其他运算符及其表达式 66
3.5.1 逗号运算符及其表达式 66
3.5.2 其他运算符及表达式 68
3.6 综合应用举例 69
3.7 本章小结 71
习题3 71
第4章 顺序和选择结构语句 73
4.1 程序设计概述和N-S图简介 73
4.1.1 程序设计概述 73
4.1.2 N-S图简介 74
4.2 顺序语句及其程序设计 75
4.2.1 说明语句和表达式语句 75
4.2.2 复合语句、分程序和空语句 76
4.2.3 顺序结构程序设计举例 77
4.3 if-else语句 78
4.3.1 条件运算符及其表达式 78
4.3.2 if语句 80
4.3.3 if-else语句 81
4.3.4 else if结构 84
4.4 switch()语句 85
4.5 选择结构程序设计举例 88
4.6 本章小结 93
习题4 93
第5章 循环和其他控制语句 98
5.1 while()语句 98
5.2 for()语句 100
5.3 do-while()语句 101
5.4 几种循环的比较 103
5.5 循环的嵌套 104
5.6 break、continue和goto语句 106
5.6.1 break语句 106
5.6.2 continue语句 107
5.6.3 goto语句 108
5.7 程序设计举例 110
5.8 本章小结 114
习题5 115
第6章 数组 122
6.1 一维数组 122
6.1.1 一维数组的定义 122
6.1.2 一维数组元素的引用 124
6.1.3 一维数组的初始化 125
6.1.4 一维数组程序举例 126
6.2 字符数组 127
6.2.1 字符数组的定义 128
6.2.2 字符数组元素的输入与输出 128
6.2.3 字符数组的初始化 130
6.2.4 字符串、字符数组的输入输 131
6.2.5 字符数组程序举例 133
6.3 多维数组 134
6.3.1 多维数组的定义 134
6.3.2 多维数组元素的引用 135
6.3.3 多维数组的初始化 136
6.3.4 多维数组应用举例 137
6.4 数组应用举例 139
6.5 本章小结 142
习题6 144
第7章 函数和变量的生命期与作用域 147
7.1 函数的定义、说明和调用 147
7.1.1 return语句 147
7.1.2 函数的定义 148
7.1.3 函数说明 149
7.1.4 函数调用 150
7.2 函数间的数据传递 151
7.2.1 函数间的数值传递 151
7.2.2 函数间的地址传递 152
7.2.3 函数间的引用传递 153
7.2.4 全局变量传递函数处理结果 154
7.2.5 利用指针、引用返回函数处理的结果 155
7.3 函数的嵌套调用与递归调用 159
7.3.1 函数的嵌套调用 159
7.3.2 函数的递归调用 160
7.4 内联函数 163
7.4.1 内联函数的格式及应用 163
7.4.2 内联函数要注意的问题 163
7.5 带默认参数的函数 164
7.5.1 带默认参数的函数应用 164
7.5.2 调用默认参数函数应注意的问题 165
7.6 变量的生存期、作用域和命名空间 165
7.6.1 变量的生存期 165
7.6.2 变量的作用域 167
7.6.3 命名空间 168
7.7 本章小结 171
习题7 172
第8章 指针 176
8.1 指针变量的定义和初始化 176
8.1.1 指针与指针的目标变量 176
8.1.2 指针变量的定义与初始化 178
8.1.3 近程和远程指针 180
8.2 指针运算 181
8.2.1 指针的一般运算 182
8.2.2 指针的算术运算 182
8.2.3 指针的关系运算 184
8.3 指针与数组、指针数组 186
8.3.1 指针与数组 186
8.3.2 指针数组 189
8.4 指向数组的指针与多级指针 193
8.4.1 指向数组的指针 193
8.4.2 多级指针 195
8.5 指针与函数 197
8.5.1 作为函数参数的指针 197
8.5.2 指针型函数 198
8.5.3 指向函数的指针 201
8.6 引用与命令行行参数 204
8.6.1 引用的定义 204
8.6.2 引用与函数 205
8.6.3 命令行参数 207
8.7 本章小结 208
习题8 209
第9章 结构体、联合体和枚举 213
9.1 结构体 213
9.1.1 结构体类型说明和结构体变量定义 213
9.1.2 结构体变量的初始化和成员的引用 216
9.1.3 结构体数组和指向结构体的指针 217
9.1.4 结构体和函数 219
9.1.5 结构体型函数和结构体指针型函数 220
9.1.6 结构体嵌套和位域结构体 223
9.2 联合体 226
9.2.1 联合体类型的说明与联合体变量的定义 226
9.2.2 联合体变量与结构体变量的比较 227
9.2.3 结构体中嵌套联合体 228
9.2.4 联合体中嵌套位域结构体 231
9.3 枚举 232
9.3.1 枚举类型的说明与变量的定义 232
9.3.2 枚举的应用 234
9.4 用typedef定义数据类型 235
9.5 本章小结 236
习题9 238
第10章 类和对象 241
10.1 类和对象 241
10.1.1 类的说明 241
10.1.2 类的数据成员和成员函数 242
10.1.3 类成员的访问控制 243
10.1.4 对象定义及成员的表示方法 244
10.1.5 动态内存的申请与释放 245
10.2 构造函数和析构函数 246
10.2.1 构造函数 247
10.2.2 拷贝构造函数 247
10.2.3 析构函数 250
10.3 类的静态成员 251
10.3.1 静态数据成员 252
10.3.2 静态成员函数 253
10.4 友元 254
10.4.1 友元函数 254
10.4.2 友元类 255
10.5 常类型 256
10.5.1 常引用 256
10.5.2 常对象 257
10.5.3 常数据成员 258
10.5.4 常成员函数 259
10.6 指向对象、类成员和this指针 260
10.6.1 指向对象的指针 260
10.6.2 指向数据成员的指针 261
10.6.3 指向成员函数的指针 262
10.6.4 this指针 263
10.7 本章小结 264
习题10 266
第11章 继承性和派生类 269
11.1 派生类 269
11.1.1 继承性的概念 269
11.1.2 类的层次结构 270
11.1.3 派生类的定义 270
11.1.4 派生类的生成过程 271
11.2 派生类的公有、私有和保护继承 272
11.2.1 公有继承 272
11.2.2 私有继承 274
11.2.3 保护继承 276
11.3 派生类的构造函数和析构函数 277
11.3.1 派生类的构造函数 277
11.3.2 派生类的析构函数 279
11.4 赋值兼容问题 281
11.5 对象族作用域 282
11.6 类的嵌套 283
11.6.1 局部类 283
11.6.2 类的嵌套 284
11.7 本章小结 287
习题11 288
第12章 多态性和虚函数 290
12.1 多重继承下派生类成员的访问 290
12.1.1 作用域分辨 290
12.1.2 虚基类 293
12.1.3 虚基类及其派生类的构造函数 294
12.2 虚函数 295
12.2.1 虚函数的声明及应用 295
12.2.2 虚析构函数 297
12.3 多态性 299
12.3.1 多态性的分类 299
12.3.2 编译时的多态性 299
12.3.3 运行时的多态性 301
12.4 纯虚函数和抽象类 302
12.4.1 纯虚函数 302
12.4.2 抽象类 304
12.5 本章小结 305
习题12 306
第13章 函数和运算符的重载 308
13.1 函数的重载 308
13.1.1 函数重载的概念 308
13.1.2 构造函数的重载 309
13.1.3 函数重载的有关规定 310
13.2 运算符重载 311
13.2.1 C++中可以重载的运算符 311
13.2.2 运算符重载的格式 312
13.3 单目运算符重载 312
13.3.1 重载单目运算符的规则 312
13.3.2 ++运算符重载 313
13.4 双目运算符的重载 315
13.4.1 运算符重载为类的成员函数 315
13.4.2 运算符重载为类的友元函数 316
13.5 其他运算符的重载 317
13.5.1 返回对象的++运算符重载 317
13.5.2 赋值运算符重载 319
13.5.3 复合赋值运算符重载 321
13.5.4 关系运算符的重载 322
13.6 本章小结 323
习题13 324
第14章 模板 325
14.1 模板的基本概念 325
14.1.1 无约束类属机制 325
14.1.2 约束类属机制 326
14.1.3 C++中模板的分类 327
14.2 函数模板 327
14.2.1 函数模板的声明 327
14.2.2 函数模板的应用 329
14.2.3 函数模板的重载 331
14.2.4 用户定义参数类型的函数模板 332
14.3 类模板 333
14.3.1 类模板的声明 334
14.3.2 类模板的应用 334
14.4 本章小结 337
习题14 338
第15章 流和文件 339
15.1 流及流类库的层次结构 339
15.2 输出流及常用的成员函数 341
15.2.1 标准设备流对象 341
15.2.2 cout流对象、插入操纵符和控制格式 342
15.2.3 put和write成员函数 344
15.3 输入流及常用的成员函数 345
15.3.1 cin流对象和提取操纵符 346
15.3.2 get和getline成员函数 346
15.3.3 read成员函数 348
15.4 文件的打开与关闭 348
15.4.1 文件的打开 348
15.4.2 文件的关闭 350
15.5 文本文件的读写 350
15.6 二进制文件的读写 352
15.7 文件的随机读写 354
15.8 本章小结 356
习题15 358
第16章 预处理和异常处理 360
16.1 C++的预处理 360
16.1.1 宏定义 361
16.1.2 文件包含 364
16.1.3 条件编译 366
16.2 C++多文件程序结构 368
16.3 异常处理的基本概念 369
16.3.1 异常处理的基本思想 369
16.3.2 异常的传播方 369
16.3.3 异常处理的执行过程 370
16.4 C++异常处理的实现 370
16.4.1 C+4的异常类 370
16.4.2 C+4的try和catch的语 371
16.4.3 C+4的throw语句 372
16.5 异常处理中的构造函数和析构函数 373
16.6 本章小结 375
习题16 377
附录A C++语言运算符的优先级和结合性表 378
附录B ASCⅡ码表 379
参考文献 380