第1章 程序设计导论 1
1.1 C++概述 1
1.1.1 C语言的历史 1
1.1.2 C++的诞生 2
1.2 程序开发的过程 3
1.2.1 编写程序 3
1.2.2 编译程序 4
1.2.3 运行程序 5
1.3 用VC开发一个简单的C++程序 6
1.3.1 启动Visual C++ 6.0集成开发环境 6
1.3.2 编写程序 7
1.3.3 编译程序 10
1.3.4 运行程序 10
1.4 输入输出语句 10
1.5 标准C++的编码规范 12
习题 14
本章小结 14
第2章 基本数据类型与表达式 17
2.1 C++的基本数据类型 17
2.1.1 整型数据 19
2.1.2 字符型数据 20
2.1.3 浮点型数据 21
2.1.4 布尔型数据 22
2.2.1 整型常量表示法 23
2.2 常量 23
2.1.5 空类型数据 23
2.2.2 浮点型常量表示法 24
2.2.3 字符常量表示法 24
2.2.4 字符串常量 25
2.2.5 符号常量 26
2.3 变量 27
2.3.1 什么是变量 27
2.3.2 定义变量 27
2.3.4 变量命名规则 28
2.3.3 变量的类型 28
2.3.5 初始化变量 29
2.3.6 动态初始化变量 30
2.3.7 常变量 30
2.4 运算符 31
2.4.1 算术运算符 32
2.4.2 关系运算符 33
2.4.3 逻辑运算符 33
2.4.4 位操作运算符 33
2.4.5 赋值运算符 34
2.4.6 其他运算符 34
2.4.7 运算符的优先级和结合性 36
2.5 表达式 38
2.5.1 表达式的种类 38
2.5.2 表达式的值和类型 38
2.5.3 表达式中的类型转换 43
习题 45
本章小结 45
第3章 程序控制语句 48
3.1 C++的语句和程序结构 48
3.1.1 C++的语句 48
3.1.2 程序的基本结构 49
3.2 if语句 50
3.2.1 if语句的逻辑表达式 51
3.2.2 if语句的3种形式 54
3.2.3 if语句的嵌套 55
3.3 switch语句 57
3.4 while循环语句 60
3.5 do-while循环语句 63
3.6 for循环语句 64
3.6.1 定义for循环语句 64
3.6.2 for循环语句的一些变化 66
3.6.3 嵌套的for循环语句 67
3.7 break和continue语句 69
3.7.1 break语句 69
3.7.2 continue语句 70
本章小结 71
习题 71
第4章 数组 74
4.1 数组的概念 74
4.2 一维数组 75
4.2.1 定义一维数组 75
4.2.2 使用一维数组元素 76
4.2.3 初始化一维数组 77
4.2.4 一维数组应用举例 78
4.3 二维数组 81
4.3.1 定义二维数组 81
4.3.2 使用二维数组元素 82
4.3.3 初始化二维数组 82
4.3.4 二维数组应用举例 84
4.4 字符数组 86
4.4.1 定义和初始化字符数组 86
4.4.2 字符数组的使用 87
4.4.3 字符数组的输入/输出 88
4.4.4 字符数组的应用举例 89
4.5 字符串函数 89
本章小结 92
习题 92
第5章 指针和引用 95
5.1 指针的概念 95
5.2.1 定义指针变量 97
5.2 指针变量 97
5.2.2 使用指针变量 98
5.3 指针运算 101
5.4 指针与数组 105
5.4.1 指针与一维数组 105
5.4.2 指针与二维数组 108
5.5 指针与字符串 112
5.6 空指针的处理 114
5.7 引用 114
本章小结 115
习题 116
第6章 函数 118
6.1 函数的基础知识 118
6.1.1 函数的声明 118
6.1.2 函数的调用 119
6.1.3 函数的原型声明 121
6.2 函数的参数 122
6.2.1 形参和实参 122
6.2.2 形参和实参之间的数据传送 123
6.3 函数的返回值 126
6.4 作用域和存储类 128
6.4.1 局部作用域 128
6.4.2 全局作用域 130
6.4.3 存储类别 131
6.5 函数的嵌套与递归 135
6.5.1 函数的嵌套调用 135
6.5.2 函数的递归调用 136
6.6 内联函数 139
6.7 函数重载 140
本章小结 142
习题 142
第7章 预处理 146
7.1 预处理命令的概念 146
7.2 文件包含命令 146
7.3 条件编译命令 147
7.4 宏定义命令 151
习题 156
本章小结 156
第8章 高级数据类型 158
8.1 结构体类型 158
8.1.1 声明结构体类型 158
8.1.2 定义和初始化结构体类型变量 159
8.1.3 使用结构体类型变量及其成员 160
8.1.4 结构体数组 162
8.2.2 定义和使用共用体类型变量 164
8.2 共用体 164
8.2.1 声明共用体类型 164
8.2.3 共用体数据类型的特点 165
8.3 枚举类型 165
8.3.1 声明枚举类型和定义枚举变量 166
8.3.2 枚举类型变量的使用 167
8.4 用typedef声明类型 168
本章小结 170
习题 170
第9章 类和对象Ⅰ 171
9.1 面向对象程序设计概述 171
9.1.1 类和对象 171
9.1.2 面向对象程序设计的特点 173
9.1.3 面向对象的软件开发流程 174
9.2 类的声明和对象的定义 175
9.2.1 声明类 175
9.2.2 定义对象 177
9.2.3 类和结构体 178
9.3 类的成员函数 179
9.3.1 在类体外定义成员函数 179
9.3.2 内联成员函数 181
9.3.3 成员函数的存储方式 181
9.4 对象成员的引用 182
9.5 this指针 184
9.6 类的封装与接口 185
本章小结 186
习题 187
第10章 类和对象Ⅱ 188
10.1 构造函数 188
10.1.1 初始化对象 188
10.1.2 定义构造函数 189
10.1.3 重载构造函数 191
10.1.4 默认参数的构造函数 192
10.2 析构函数 193
10.2.1 定义和使用析构函数 194
10.2.2 构造函数和析构函数的调用顺序 195
10.3 对象数组 197
10.4 对象指针 198
10.4.1 指向对象的指针 198
10.4.2 指向对象成员的指针 200
10.5 共享数据的保护 200
10.5.1 常对象 201
10.5.2 常对象成员 201
10.5.3 指向对象的常指针 203
10.5.4 指向常对象的指针变量 203
10.5.5 对象的常引用 204
10.6 对象的动态建立和释放 205
10.7 对象的赋值与复制 207
10.7.1 对象的赋值 207
10.7.2 对象的复制 209
10.8.1 静态成员数据 212
10.8 静态成员 212
10.8.2 静态成员函数 214
10.9 友元 216
10.9.1 友元函数 217
10.9.2 友元类 220
本章小结 224
习题 224
11.1.1 继承和派生的概念 228
11.1 继承和派生类 228
第11章 继承性和派生类 228
11.1.2 声明派生类 229
11.1.3 派生类的3种继承方式 230
11.2 单一继承 232
11.2.1 单一继承的构造函数 233
11.2.2 单一继承的析构函数 237
11.2.3 子类型化和类型适应 238
11.3 多重继承 241
11.3.1 声明多重继承的方法 241
11.3.2 多重继承的构造函数 242
11.3.3 多重继承的二义性 243
11.4 基类与派生类 245
11.4.1 基类与派生类的关系 245
11.4.2 类的组合 246
11.5 虚基类 247
11.5.1 声明虚基类 247
11.5.2 虚基类的构造函数 248
本章小结 249
习题 250
第12章 多态与虚函数 252
12.1 多态的概念 252
12.2 运算符重载 253
12.2.1 运算符重载的规则 253
12.2.2 运算符重载的方法 254
12.2.3 其他重载运算符 261
12.3.1 静态联编 264
12.3 静态联编和动态联编 264
12.3.2 动态联编 265
12.4 虚函数 266
12.4.1 声明和使用虚函数 266
12.4.2 多重继承的虚函数 269
12.4.3 虚析构函数 270
12.5 纯虚函数和抽象类 272
12.5.1 纯虚函数 272
12.5.2 抽象类 274
本章小结 278
习题 278
第13章 输入和输出 280
13.1 输入和输出流 280
13.2 标准输出流 281
13.2.1 cout、cerr和clog 281
13.2.2 使用成员函数put()输出字符 283
13.2.3 使用成员函数write()输出字符串 285
13.3 标准输入流 285
13.3.1 cin流 286
13.3.2 使用成员函数读取字符 287
13.3.3 istream的其他成员函数 290
13.4 格式化输入和输出 292
13.4.1 设置流的格式化标志 292
13.4.2 设置字段宽度、精度和填充字符 293
13.4.3 操控符 295
13.5 文件操作和文件流 296
13.5.1 文件的概述 296
13.5.2 磁盘文件的打开和关闭 296
13.5.3 文本文件的读写 298
13.5.4 二进制文件的读写 300
13.5.5 随机访问数据文件 302
13.6 流错误处理 303
13.6.1 状态字和状态函数 304
13.6.2 清除/设置流的状态位 304
习题 305
本章小结 305
第14章 异常处理和命名空间 308
14.1 异常处理 308
14.2 命名空间 311
14.2.1 命名空间的概述 311
14.2.2 使用命名空间成员 312
14.2.3 无名称的命名空间 313
习题 314
本章小结 314
14.2.4 标准命名空间std 314
第15章 实训 317
15.1 加密消息 317
15.2 模拟棋盘游戏 324
15.3 链接表的应用 333
15.4 对话框程序设计 341
15.5 学生信息管理系统 346
附录A 算法 353
附录B 标准库头文件 355