第1章 C++语言概述 1
1.1 C++语言的发展 1
1.2 C++语言的特点 2
1.3 面向对象程序设计 3
1.4 C++语言的基本符号 5
1.5 C++语言的词汇 5
1.5.1 关键字 5
1.5.2 标识符 6
1.5.3 字面常量 7
1.5.4 运算符 7
1.5.5 标点符号 7
1.6 C++程序的基本框架 7
1.6.1 最简单的C++程序 8
1.6.2 结构化程序设计框架 9
1.6.3 面向对象程序设计框架 11
1.7 C++程序的开发过程 14
1.7.1 编辑 14
1.7.2 编译 14
1.7.3 链接 14
1.7.4 运行和调试 15
本章小结 15
习题1 16
第2章 数据类型、运算符和表达式 18
2.1 C++语言的数据类型 18
2.1.1 基本类型 18
2.1.2 基本类型的派生类型 19
2.2 常量 20
2.2.1 逻辑常量 21
2.2.2 字符常量 21
2.2.3 整型常量 23
2.2.4 实型常量 24
2.2.5 枚举常量 24
2.3 变量 25
2.3.1 变量的定义 25
2.3.2 变量的使用方式 27
2.3.3 符号常量声明语句 29
2.3.4 使用#define命令定义符号常量 29
2.4 运算符和表达式 30
2.4.1 运算符和表达式的概念 30
2.4.2 运算类型与运算符 30
2.4.3 赋值运算 31
2.4.4 算术运算符和算术表达式 32
2.4.5 关系运算符和关系表达式 33
2.4.6 逻辑运算符和逻辑表达式 34
2.4.7 位运算 35
2.4.8 其他运算 35
2.4.9 优先级和结合性 38
本章小结 41
习题2 42
第3章 基本控制结构 44
3.1 C++语句 44
3.2 顺序结构 45
3.2.1 声明语句 45
3.2.2 表达式语句 46
3.2.3 基本输入输出 47
3.2.4 复合语句和空语句 51
3.3 选择结构 52
3.3.1 if语句 52
3.3.2 switch语句 56
3.4 循环结构 61
3.4.1 for语句 61
3.4.2 while语句 64
3.4.3 do...while语句 66
3.4.4 循环的嵌套 67
3.5 跳转语句 70
3.5.1 break语句 70
3.5.2 continue语句 71
3.5.3 return语句 71
3.5.4 goto语句 71
本章小结 72
习题3 73
第4章 数组、指针与引用 78
4.1 数组 78
4.1.1 一维数组 78
4.1.2 二维数组 83
4.1.3 多维数组 86
4.1.4 字符数组 87
4.2 指针 91
4.2.1 指针和地址 93
4.2.2 指针和数组 98
4.2.3 指针数组和函数指针 102
4.3 引用 107
4.4 动态存储分配 109
本章小结 112
习题4 112
第5章 函数 118
5.1 函数定义 119
5.2 函数调用 120
5.3 函数原型 121
5.4 函数返回类型 123
5.5 函数参数 125
5.5.1 参数的传递方式 125
5.5.2 默认参数 130
5.6 函数重载 131
5.7 内联函数 133
5.8 递归函数 134
5.9 变量作用域与生存周期 138
5.9.1 存储类型 138
5.9.2 生存周期 142
本章小结 144
习题5 144
第6章 类和对象 150
6.1 类的定义 150
6.1.1 类的定义 150
6.1.2 类成员的访问控制 151
6.1.3 类的数据成员 153
6.1.4 类的成员函数 154
6.2 对象的定义 159
6.2.1 对象的定义 159
6.2.2 对象的成员 159
6.3 构造函数和析构函数 161
6.3.1 构造函数和析构函数的定义 161
6.3.2 缺省构造函数和缺省析构函数 165
6.3.3 拷贝构造函数 165
6.4 对象的生存期 169
6.4.1 全局对象、静态对象与局部对象 169
6.4.2 自由存储对象 170
6.5 this指针 172
6.6 静态成员 173
6.6.1 静态数据成员 174
6.6.2 静态成员函数 176
6.7 常成员 177
6.7.1 常对象 177
6.7.2 常成员函数 178
6.7.3 常数据成员 181
6.8 友元 183
6.8.1 友元函数 183
6.8.2 友元类 186
6.9 对象数组 187
6.10 成员对象 190
本章小结 192
习题6 193
第7章 继承和派生 202
7.1 继承与派生 202
7.1.1 基本概念 202
7.1.2 派生类的定义与构成 204
7.2 派生类对基类成员的访问 204
7.3 派生类的构造函数和析构函数 208
7.3.1 派生类的构造函数 208
7.3.2 派生类的析构函数 212
7.4 多继承与虚基类 214
7.4.1 多继承中的二义性问题 214
7.4.2 虚基类的定义 219
7.4.3 虚基类的构造函数 220
7.5 子类型关系 223
7.6 虚函数与多态性 226
7.6.1 多态性的概念 226
7.6.2 虚函数 227
7.6.3 虚析构函数 230
7.6.4 纯虚函数与抽象类 231
本章小结 233
习题7 235
第8章 运算符重载 244
8.1 运算符函数与运算符重载 244
8.2 典型运算符的重载 245
8.2.1 关于分数类fraction 245
8.2.2 重载取负运算符“-” 247
8.2.3 重载加法运算符“+” 248
8.2.4 重载增1运算符“++” 248
8.2.5 重载类型转换符“long” 249
8.2.6 重载赋值运算符“=” 250
8.2.7 重载复合赋值运算符“+=” 252
8.2.8 重载关系操作符“>” 253
8.2.9 重载下标访问运算符“[ ]” 253
8.2.10 重载C++流运算符“>>”和“<<” 254
8.3 运算符重载应注意的几个问题 255
8.3.1 重载的运算符应保持其原有的基本语义 255
8.3.2 重载的运算符应尽可能保持其原有的特性 256
8.3.3 运算符的重载应当配套 256
8.3.4 使用引用参数还是非引用参数? 257
8.3.5 作为成员函数重载还是作为非成员函数重载? 257
本章小结 257
习题8 258
第9章 模板 262
9.1 函数模板 262
9.1.1 函数模板的概念、定义与应用 262
9.1.2 模板实参的省略 264
9.1.3 函数模板的定制 267
9.2 类模板 268
9.2.1 类模板的概念、定义与应用 268
9.2.2 类模板的派生与继承 270
9.2.3 类模板的定制 272
本章小结 275
习题9 276
第10章 C++流 281
10.1 C++流的概念 281
10.1.1 C++流的体系结构 281
10.1.2 预定义流对象 281
10.1.3 提取运算符>>和插入运算符<< 282
10.1.4 有格式输入输出和无格式输入输出 283
10.1.5 操作符 283
10.2 输入输出的格式控制 284
10.2.1 默认的输入输出格式 284
10.2.2 格式标志与格式控制 285
10.2.3 输入输出宽度的控制 287
10.2.4 浮点数输出方式的控制 287
10.2.5 输出精度的控制 288
10.2.6 对齐方式的控制 289
10.2.7 小数点处理方式的控制 290
10.2.8 填充字符的控制 290
10.2.9 插入换行符 290
10.2.10 其他格式控制方法 291
10.3 文件流 292
10.3.1 文件流的建立 293
11.3.2 文件流的关闭 294
10.3.3 文件流状态的判别 294
10.3.4 文件流的定位 294
10.3.5 特殊的文件流:CON和PRN 295
10.3.6 有格式输入输出 296
10.3.7 无格式输入输出 300
本章小结 307
习题10 309
第11章 上机指导 313
11.1 上机考试系统使用说明 313
11.1.1 上机考试环境 313
11.1.2 上机考试时间 313
11.1.3 上机考试题型及分值 314
11.1.4 上机考试登录 314
11.1.5 试题内容查阅工具的使用 316
11.1.6 考生文件夹和文件的恢复 318
11.2 上机考试内容 318
11.2.1 基本操作题 318
11.2.2 简单应用题 320
11.2.3 综合应用题 323
11.3 上机考试样题 325
附录1 使用Visual C++6.0编写标准C++程序 338
附录2 C/C++常用标准库函数 354
附录3 ASCII码表 363
附录4 全国计算机等级考试二级C++语言程序设计考试大纲(2007年版) 365
附录5 全国计算机等级考试二级C++语言程序设计样题及参考答案 368
附录6 2007年4月全国计算机等级考试二级笔试试题——C++语言程序设计 374
附录7 习题参考答案 385