第1篇 C++语言基础与面向过程程序设计 2
第1章 C++及其开发环境概述 2
1.1 面向对象与面向过程的程序设计概述 2
1.1.1 什么是面向对象的程序设计思想 2
1.1.2 面向过程与面向对象程序设计特点比较 4
1.1.3 两种程序设计方法对比分析 5
1.2 从C到C++的演变 7
1.3 认识C++程序及其开发环境 7
1.3.1 C++程序的开发过程 7
1.3.2 认识C++程序 9
1.3.3 熟悉C++开发环境——Visual C++ 6.0 11
综合实例1——编写并运行C++程序 13
综合实例2——熟悉Visual C++工作区与工程的使用 15
本章小结 20
思考与练习 20
第2章 C++程序设计基础(上) 22
2.1 C++的数据类型 22
2.1.1 C++数据类型概述 23
2.1.2 关于数值的范围 25
2.1.3 数据类型的转换 26
2.1.4 sizeof操作符 28
2.2 常量和变量 30
2.2.1 常量的类型与符号常量的声明 30
2.2.2 变量的命名、定义与声明 34
2.3 C++的运算符、表达式和优先级 36
2.3.1 算术运算符与算术表达式 37
2.3.2 赋值运算符与赋值表达式 39
2.3.3 关系运算符与关系表达式 40
2.3.4 逻辑运算符与逻辑表达式 41
2.3.5 条件运算符及其表达式 43
2.3.6 逗号运算符及其表达式 44
2.3.7 位运算符和位运算 45
2.3.8 运算符的优先级 46
综合实例1——输出多种立体的体积 48
综合实例2——判断三角形类型并求解其面积 51
本章小结 52
思考与练习 52
第3章 C++程序设计基础(下) 56
3.1 C++语句的类型 56
3.1.1 声明语句 56
3.1.2 执行语句 57
3.1.3 空语句 58
3.1.4 复合语句 58
3.2 数据的输入输出 58
3.2.1 输入语句 59
3.2.2 输出语句 59
3.2.3 输入/输出的格式控制 61
3.3 程序的流程控制 62
3.3.1 选择结构 62
3.3.2 循环结构 70
3.3.3 转向语句 75
3.4 预处理命令 78
3.4.1 宏定义 78
3.4.2 文件包含 79
3.4.3 条件编译 80
综合实例1——根据输入的年龄判断所属年龄阶段 81
综合实例2——将输入数字转化为以汉字形式输出的货币金额 82
综合实例3——输出杨辉三角 86
本章小结 88
思考与练习 88
第4章 函数的应用 93
4.1 函数声明 93
4.1.1 函数的定义 94
4.1.2 函数原型的声明 96
4.2 函数的参数与返回值 98
4.2.1 函数的参数 98
4.2.2 函数的返回值 101
4.3 函数调用 101
4.3.1 函数调用的一般形式 101
4.3.2 函数的嵌套调用 102
4.3.3 函数的递归调用 103
4.4 内联函数 105
4.5 函数重载 106
4.6 变量的存储属性 108
4.6.1 变量的作用域 108
4.6.2 变量的存储类别 112
4.7 内部函数和外部函数 115
综合实例1——编排日历 116
综合实例2——求两点间距离 119
综合实例3——汉诺塔问题求解 120
综合实例4——用二分法迭代求解方程 122
本章小结 123
思考与练习 123
第5章 数组和字符串 127
5.1 认识数组 127
5.2 一维数组 128
5.2.1 一维数组的定义 128
5.2.2 一维数组的初始化 129
5.2.3 一维数组元素的引用 129
5.2.4 一维数组的应用 130
5.3 二维数组 133
5.3.1 二维数组的定义 133
5.3.2 二维数组的初始化 134
5.3.3 二维数组元素的引用 136
5.3.4 二维数组的应用 137
5.4 数组在函数中的应用 139
5.5 字符数组与字符串 140
5.5.1 字符数组的定义和初始化 141
5.5.2 字符数组的输入输出 141
5.5.3 字符串处理函数 143
5.6 字符串类和字符串变量 144
5.6.1 字符串变量 145
5.6.2 字符串数组 145
综合实例1——插入排序 146
综合实例2——打印逆时针螺旋方阵 147
综合实例3——找出最大字符串 149
本章小结 150
思考与练习 150
第6章 指针与引用 155
6.1 指针与指针变量 155
6.1.1 指针的概念 155
6.1.2 指针变量的定义及应用 157
6.1.3 指针运算 159
6.1.4 new和delete运算符 162
6.2 指针与数组 163
6.2.1 指向一维数组的指针 163
6.2.2 二维数组的访问 165
6.3 指针与字符串 167
6.4 指针与函数 168
6.4.1 指针作函数参数 168
6.4.2 指向数组的指针作函数参数 170
6.4.3 返回指针的函数 172
6.4.4 指向函数的指针 173
6.5 指针数组和指向指针的指针 174
6.5.1 指针数组 174
6.5.2 指向指针的指针 176
6.6 引用 177
6.6.1 变量的引用 177
6.6.2 引用作为函数的参数 178
综合实例1——降序输出数据 179
综合实例2——矩阵转置 181
综合实例3——输出成绩 183
本章小结 185
思考与练习 186
第7章 自定义数据类型 190
7.1 结构体 190
7.1.1 结构体变量的定义、初始化及使用 191
7.1.2 结构体数组的定义、初始化及使用 195
7.1.3 指向结构体变量的指针 199
7.1.4 结构体作为函数参数 201
7.2 共用体 202
7.2.1 共用体变量的定义与初始化 203
7.2.2 共用体变量的使用 203
7.3 枚举类型 204
7.3.1 枚举类型变量的定义与初始化 205
7.3.2 枚举类型变量的使用 205
7.4 typedef声明 206
综合实例1——输出教师信息 208
综合实例2——输出每种动物的信息 211
本章小结 213
思考与练习 213
第2篇 C++面向对象程序设计 218
第8章 类和对象 218
8.1 类 218
8.1.1 类的声明 218
8.1.2 类成员的访问属性 219
8.1.3 成员函数的定义 219
8.2 对象 221
8.2.1 对象的定义 221
8.2.2 对象成员的引用 223
8.2.3 类和对象的应用举例 223
8.3 构造函数 225
8.3.1 构造函数概述 225
8.3.2 带参数的构造函数 226
8.3.3 带默认参数的构造函数 228
8.3.4 带参数初始化表的构造函数 229
8.3.5 构造函数的重载 230
8.3.6 拷贝构造函数 231
8.4 析构函数 232
8.5 对象数组 234
8.5.1 对象数组的定义 234
8.5.2 对象数组的初始化 234
8.6 对象指针 236
8.6.1 对象指针的声明与使用 236
8.6.2 指向对象成员的指针 237
8.6.3 this指针 238
8.7 静态成员 239
8.7.1 静态数据成员 239
8.7.2 静态成员函数 241
8.8 友元 244
8.8.1 友元函数 244
8.2.2 友元类 245
综合实例——模拟存款与取款过程 247
本章小结 249
思考与练习 249
第9章 继承与派生 251
9.1 类的继承与派生概述 251
9.1.1 继承与派生的概念 251
9.1.2 派生类的声明 252
9.1.3 派生类的构成 253
9.1.4 派生类的继承方式 254
9.1.5 派生类的构造函数和析构函数 259
9.2 多重继承 265
9.2.1 多重继承的声明 266
9.2.2 多重继承派生类的构造函数 266
9.2.3 二义性问题 268
9.3 虚基类 271
9.3.1 虚基类的声明 272
9.3.2 虚基类的构造函数 273
综合实例1——通话计费 275
综合实例2 工资管理 278
本章小结 283
思考与练习 283
第10章 多态性、虚函数与运算符重载 285
10.1 多态性的概念 285
10.2 虚函数 285
10.3 纯虚函数与抽象类 287
10.4 运算符重载 288
10.4.1 运算符重载的定义 289
10.4.2 运算符重载的形式 291
10.4.3 常用运算符的重载 295
10.5 实现类型转换 298
综合实例1——利用虚函数求不同图形的面积 299
综合实例2——实现复数的简单运算 302
本章小结 304
思考与练习 304
第11章 输入/输出流 307
11.1 C++的输入/输出 307
11.1.1 流与缓冲区 307
11.1.2 输入/输出流类 308
11.2 标准输入输出流 309
11.2.1 标准输入流对象cin 310
11.2.2 输入流的成员函数 311
11.2.3 标准输出流对象 314
11.2.4 输入/输出的格式控制 316
11.2.5 流运算符的重载 321
11.3 文件流 323
11.3.1 文件的特点 323
11.3.2 文件流类和流对象 324
11.3.3 文件的打开与关闭 324
11.3.4 文件的读写操作 327
11.3.5 文件指针的使用 329
11.3.6 二进制文件的应用实例(选读) 331
综合实例1——求解一元二次方程 335
综合实例2——数据的写入与读出 336
本章小结 338
思考与练习 338
第12章 命名空间与异常处理 341
12.1 命名空间 341
12.1.1 命名空间的定义 343
12.1.2 命名空间成员的引用 346
12.2 异常处理 349
12.2.1 异常处理的实现 350
12.2.2 类的异常处理 355
12.2.3 异常规范 357
综合实例1——显示学生的个人信息和购书信息 359
综合实例2——学生考勤情况统计 361
本章小结 366
思考与练习 366
第13章 模板的使用 369
13.1 模板概述 369
13.1.1 函数模板 370
13.1.2 类模板 371
13.2 函数模板 371
13.2.1 函数模板的定义 371
13.2.2 函数模板的应用 372
13.3 类模板 373
13.3.1 类模板的定义 373
13.2.2 类模板的应用 374
综合实例1——冒泡排序 377
综合实例2——选择不同的排序方法排序 379
本章小结 382
思考与练习 382