第1章 C++语言概述 1
1.1 C++语言的发展 1
1.2 C++语言的特点 2
1.3 面向对象程序设计 2
1.4 C++语言的基本符号 4
1.5 C++语言的词汇 4
1.5.1 关键字 4
1.5.2 标识符 5
1.5.3 字面常量 5
1.5.4 运算符 6
1.5.5 标点符号 6
1.6 C++程序的基本框架 6
1.6.1 最简单的C++程序 6
1.6.2 结构化程序设计框架 8
1.6.3 面向对象程序设计框架 10
1.7 C++程序的开发过程 11
1.7.1 编辑 12
1.7.2 编译 12
1.7.3 链接 12
1.7.4 运行和调试 12
本章小结 13
习题 13
第2章 数据类型、运算符和表达式 16
2.1 C++语言的数据类型 16
2.1.1 基本类型 16
2.1.2 基本类型的派生类型 17
2.2 常量 18
2.2.1 逻辑常量 18
2.2.2 字符常量 18
2.2.3 整型常量 20
2.2.4 实型常量 20
2.2.5 枚举常量 21
2.3 变量 22
2.3.1 变量的定义 22
2.3.2 变量的使用方式 23
2.3.3 符号常量声明语句 25
2.3.4 使用#define命令定义符号常量 25
2.4 运算符和表达式 26
2.4.1 运算符和表达式的概念 26
2.4.2 运算类型与运算符 26
2.4.3 赋值运算 27
2.4.4 算术运算符和算术表达式 28
2.4.5 关系运算符和关系表达式 29
2.4.6 逻辑运算符和逻辑表达式 29
2.4.7 位运算 30
2.4.8 其他运算 31
2.4.9 优先级和结合性 33
本章小结 36
习题 36
第3章 基本控制结构 38
3.1 C++语句 38
3.2 顺序结构 38
3.2.1 声明语句 38
3.2.2 表达式语句 40
3.2.3 基本输入输出 40
3.2.4 复合语句和空语句 44
3.3 选择结构 44
3.3.1 if语句 45
3.3.2 switch语句 49
3.4 循环结构 52
3.4.1 for语句 52
3.4.2 while语句 55
3.4.3 do...while语句 56
3.4.4 循环的嵌套 58
3.5 跳转语句 60
3.5.1 break语句 60
3.5.2 continue语句 61
3.5.3 return语句 61
3.5.4 goto语句 61
本章小结 62
习题 63
第4章 数组、指针与引用 67
4.1 数组 67
4.1.1 一维数组 67
4.1.2 二维数组 71
4.1.3 多维数组 74
4.1.4 字符数组 74
4.2 指针 78
4.2.1 指针和地址 80
4.2.2 指针和数组 84
4.2.3 指针数组和函数指针 87
4.3 引用 92
4.4 动态存储分配 93
本章小结 96
习题 96
第5章 函数 101
5.1 函数定义 101
5.2 函数调用 103
5.3 函数原型 103
5.4 函数返回类型 105
5.5 函数参数 107
5.5.1 参数的传递方式 107
5.5.2 默认参数 111
5.6 函数重载 112
5.7 内联函数 114
5.8 递归函数 115
5.9 变量作用域与生存周期 118
5.9.1 存储类型 118
5.9.2 生存周期 122
本章小结 123
习题 123
第6章 类和对象 128
6.1 类的定义 128
6.1.1 类的定义 128
6.1.2 类成员的访问控制 129
6.1.3 类的数据成员 130
6.1.4 类的成员函数 131
6.2 对象的定义 136
6.2.1 对象的定义 136
6.2.2 对象的成员 136
6.3 构造函数和析构函数 138
6.3.1 构造函数和析构函数的定义 138
6.3.2 缺省构造函数和缺省析构函数 141
6.3.3 拷贝构造函数 141
6.4 对象的生存期 144
6.4.1 全局对象、静态对象与局部对象 144
6.4.2 自由存储对象 146
6.5 this指针 147
6.6 静态成员 148
6.6.1 静态数据成员 148
6.6.2 静态成员函数 150
6.7 常成员 152
6.7.1 常对象 152
6.7.2 常成员函数 152
6.7.3 常数据成员 155
6.8 友元 156
6.8.1 友元函数 157
6.8.2 友元类 159
6.9 对象数组 160
6.10 成员对象 162
本章小结 164
习题 165
第7章 继承和派生 173
7.1 继承与派生 173
7.1.1 基本概念 173
7.1.2 派生类的定义与构成 174
7.2 派生类对基类成员的访问 175
7.3 派生类的构造函数和析构函数 178
7.3.1 派生类的构造函数 178
7.3.2 派生类的析构函数 181
7.4 多继承与虚基类 183
7.4.1 多继承中的二义性问题 183
7.4.2 虚基类的定义 188
7.4.3 虚基类的构造函数 189
7.5 子类型关系 191
7.6 虚函数与多态性 194
7.6.1 多态性的概念 194
7.6.2 虚函数 194
7.6.3 虚析构函数 197
7.6.4 纯虚函数与抽象类 198
本章小结 200
习题 201
第8章 运算符重载 209
8.1 运算符函数与运算符重载 209
8.2 典型运算符的重载 210
8.2.1 关于分数类fraction 210
8.2.2 重载取负运算符“-” 211
8.2.3 重载加法运算符“+” 212
8.2.4 重载增1运算符“++” 212
8.2.5 重载类型转换符“long” 213
8.2.6 重载赋值运算符“=” 214
8.2.7 重载复合赋值运算符“+=” 216
8.2.8 重载关系操作符“>” 216
8.2.9 重载下标访问运算符“[]” 217
8.2.10 重载C++流运算符“>>”和“<<” 218
8.3 运算符重载应注意的几个问题 219
8.3.1 重载的运算符应保持其原有的基本语义 219
8.3.2 重载的运算符应尽可能保持其原有的特性 219
8.3.3 运算符的重载应当配套 219
8.3.4 使用引用参数还是非引用参数? 220
8.3.5 作为成员函数重载还是作为非成员函数重载? 220
本章小结 220
习题 221
第9章 模板 225
9.1 函数模板 225
9.1.1 函数模板的概念、定义与应用 225
9.1.2 模板实参的省略 226
9.1.3 函数模板的定制 229
9.2 类模板 230
9.2.1 类模板的概念、定义与应用 230
9.2.2 类模板的派生与继承 232
9.2.3 类模板的定制 234
本章小结 236
习题 237
第10章 C++流 241
10.1 C++流的概念 241
10.1.1 C++流的体系结构 241
10.1.2 预定义流对象 242
10.1.3 提取运算符>>和插入运算符<< 242
10.1.4 有格式输入输出和无格式输入输出 242
10.1.5 操作符 243
10.2 输入输出的格式控制 243
10.2.1 默认的输入输出格式 243
10.2.2 格式标志与格式控制 244
10.2.3 输入输出宽度的控制 246
10.2.4 浮点数输出方式的控制 246
10.2.5 输出精度的控制 247
10.2.6 对齐方式的控制 248
10.2.7 小数点处理方式的控制 248
10.2.8 填充字符的控制 249
10.2.9 插入换行符 249
10.2.10 其他格式控制方法 249
10.3 文件流 251
10.3.1 文件流的建立 251
10.3.2 文件流的关闭 252
10.3.3 文件流状态的判别 252
10.3.4 文件流的定位 253
10.3.5 特殊的文件流:CON和PRN 253
10.3.6 有格式输入输出 254
10.3.7 无格式输入输出 257
本章小结 263
习题 265
习题参考答案 269
附录A 使用Visual C++6.0编写标准C++程序 275
A.1 集成开发环境与项目 275
A.1.1 集成开发环境 275
A.1.2 项目和工作区 275
A.2 编写标准C++程序 276
A.3 修改已创建的程序 282
A.4 使用基本的调试功能 283
A.5 菜单命令一览表 285
附录B C/C++常用标准库函数 289
B.1 数学函数 289
B.2 字符函数 291
B.3 字符串函数 293
B.4 一般工具函数 294
附录C ASCII码表 298