第1章 C++概述 1
1.1 程序设计语言的发展 2
1.1.1 机器语言阶段 2
1.1.2 汇编语言阶段 2
1.1.3 高级语言阶段 3
1.1.4 从C到C++ 4
1.2 简单的C++程序介绍 4
1.3 程序开发的过程 7
1.4 上机练习 8
第2章 数据类型、运算符和表达式 11
2.1 标识符和关键字 12
2.1.1 标识符 12
2.1.2 关键字 12
2.2 C++的基本数据类型 13
2.2.1 int和double类型 13
2.2.2 其他数值类型 14
2.2.3 char类型 15
2.2.4 类型的兼容性 15
2.3 变量和赋值 16
2.3.1 变量 16
2.3.2 赋值语句 17
2.4 基本运算符和表达式 19
2.4.1 基本运算符和表达式的简介 19
2.4.2 算术运算符和算术表达式 20
2.4.3 赋值运算符和赋值表达式 21
2.4.4 关系运算符和关系表达式 22
2.4.5 逻辑运算符与逻辑表达式 23
2.4.6 位运算符和位运算表达式 24
2.4.7 条件运算符和条件表达式 25
2.4.8 逗号运算符和逗号表达式 26
2.4.9 sizeof运算符和表达式 26
2.5 简单的输入/输出实现方法 26
2.5.1 格式化输入输出——scanf()和printf() 27
2.5.2 I/O流 29
2.5.3 cin 29
2.5.4 cout 30
2.5.5 输出控制符 30
2.6 上机练习 33
第3章 C++流程控制 35
3.1 算法 36
3.1.1 算法的概念 36
3.1.2 算法的表示 36
3.2 C++语句 37
3.3 C++程序的三种基本结构 38
3.4 顺序结构程序 39
3.5 选择结构程序 39
3.5.1 if语句 40
3.5.2 嵌套if语句 42
3.5.3 switch语句 44
3.6 循环结构程序 46
3.6.1 while语句 46
3.6.2 do-while语句 48
3.6.3 for循环语句 50
3.6.4 循环的嵌套 52
3.6.5 转向语句 55
3.6.6 三种循环的比较 57
3.7 上机练习 57
第4章 函数和预处理 59
4.1 标准库函数 60
4.2 程序员自定义函数 62
4.2.1 函数定义举例 62
4.2.2 函数定义语法总结 65
4.3 过程抽象 66
4.3.1 案例分析:购买蛋糕 67
4.3.2 案例分析:企业管理 70
4.4 函数的嵌套调用和递归调用 71
4.4.1 函数的嵌套调用 71
4.4.2 函数的递归调用 73
4.5 内联函数和函数重载 76
4.5.1 内联函数 76
4.5.2 函数重载 77
4.6 具有默认参数值的函数 81
4.7 局部变量与全局变量 82
4.7.1 局部变量 82
4.7.2 全局变量 83
4.7.3 动态存储方式与静态存储方式 85
4.8 变量的存储类型 86
4.8.1 自动类型(auto) 86
4.8.2 寄存器类型(register) 87
4.8.3 静态类型(static) 88
4.8.4 外部类型(extern) 90
4.9 编译预处理 91
4.9.1 宏定义 92
4.9.2 文件包含命令 93
4.9.3 条件编译命令 94
4.10 程序的多文件组织 96
4.10.1 头文件 96
4.10.2 多文件结构 96
4.10.3 多文件结构程序示例 97
4.11 上机练习 98
第5章 数组 99
5.1 数组的概念 100
5.1.1 数组与数组元素 100
5.1.2 数组的维数 100
5.2 一维数组 100
5.2.1 一维数组的定义和初始化 100
5.2.2 一维数组的操作 102
5.2.3 数组的大小 103
5.2.4 一维数组的应用 103
5.3 二维数组 108
5.3.1 二维数组的定义 109
5.3.2 二维数组初始化 110
5.3.3 二维数组应用 111
5.4 字符数组的定义及应用 114
5.4.1 字符数组和字符串 114
5.4.2 字符串处理函数 117
5.4.3 二维字符数组 120
5.4.4 字符数组应用 121
5.5 数组和函数 125
5.5.1 向函数传递一维数组 125
5.5.2 向函数传递二维数组 128
5.6 上机练习 129
第6章 指针和引用 131
6.1 指针与指针变量 132
6.1.1 地址与指针的概念 132
6.1.2 指针变量 133
6.1.3 指针变量的运算 136
6.2 指针与数组 139
6.2.1 一维数组与指针 139
6.2.2 二维数组与指针 141
6.2.3 字符指针 143
6.2.4 指针数组 145
6.2.5 指向指针的指针(二级指针) 147
6.3 堆的动态分配和释放 147
6.3.1 new运算符 148
6.3.2 delete运算符 148
6.4 指针与函数 150
6.4.1 指针变量作为函数参数 150
6.4.2 函数指针 155
6.4.3 返回指针值的函数 157
6.5 引用 158
6.5.1 引用及声明方法 158
6.5.2 用引用作为函数的参数 160
6.5.3 如何使一个被调函数同时返回多个值 161
6.5.4 用引用返回函数值 162
6.6 上机练习 163
第7章 结构体、共用体和枚举类型 165
7.1 结构体的定义及使用 166
7.1.1 结构体的定义 166
7.1.2 定义结构体变量的方法 167
7.1.3 结构体变量的使用 169
7.1.4 结构体变量的初始化 169
7.1.5 结构体数组 170
7.1.6 结构体和函数 175
7.2 共用体的定义与使用 176
7.2.1 共用体的定义 176
7.2.2 定义共用体类型变量 177
7.2.3 共用体变量的使用 177
7.3 枚举类型 179
7.4 链表 181
7.4.1 结构体与指针 181
7.4.2 链表概念 183
7.4.3 链表的基本操作 184
7.5 typedef定义类型 193
7.6 上机练习 194
第8章 类和对象 195
8.1 面向对象程序设计基本概念 196
8.1.1 类 196
8.1.2 对象 196
8.1.3 封装与数据隐藏 197
8.1.4 继承 197
8.1.5 多态性 197
8.1.6 消息 198
8.2 类和对象的定义 198
8.2.1 定义类和成员函数 198
8.2.2 公共成员和私有成员 200
8.2.3 类和对象编程举例 205
8.2.4 类对象的内存分配 210
8.2.5 this指针 211
8.3 用于初始化的构造函数 213
8.3.1 构造函数的定义 213
8.3.2 默认构造函数 217
8.3.3 析构函数 218
8.3.4 拷贝构造函数和默认拷贝构造函数 220
8.4 类和对象的进一步应用 224
8.4.1 堆对象 224
8.4.2 对象数组 225
8.4.3 类对象作为成员 227
8.5 静态成员 229
8.5.1 静态数据成员 229
8.5.2 静态成员函数 232
8.6 友元函数和友元类 235
8.6.1 友元函数 235
8.6.2 友元类 239
8.7 上机练习 240
第9章 继承与派生 243
9.1 继承与派生的基础知识 244
9.2 类的继承方式 251
9.2.1 公有继承 251
9.2.2 私有继承 253
9.2.3 保护继承 255
9.2.4 继承方式的总结和比较 255
9.3 派生类的构造函数与析构函数 256
9.3.1 简单派生类的构造函数 256
9.3.2 析构函数 258
9.3.3 复杂派生类的构造函数和析构函数 258
9.3.4 派生友元类 261
9.4 基类与派生类的转换 262
9.5 上机练习 264
第10章 多态性 265
10.1 多态性的概念 266
10.2 运算符重载 266
10.2.1 运算符重载的规则 267
10.2.2 运算符重载为成员函数 267
10.2.3 运算符重载为友元函数 268
10.2.4 赋值运算符重载 270
10.2.5 单目自增和自减的运算符重载 272
10.2.6 关系运算符重载 273
10.2.7 下标运算符重载 275
10.2.8 类型转换运算符重载 276
10.3 联编和虚函数 279
10.3.1 虚函数的作用和定义 279
10.3.2 虚函数的使用原则 281
10.3.3 虚函数的访问 281
10.3.4 虚析构函数 282
10.4 纯虚函数和抽象类 284
10.5 上机练习 286
第11章 输入和输出流类库 289
11.1 输入/输出流概念 290
11.2 流类库 291
11.3 格式化I/O 293
11.3.1 使用ios类成员函数 293
11.3.2 使用操纵符 296
11.4 文件流 298
11.4.1 文件流类与文件流对象 299
11.4.2 文件的打开和关闭 300
11.4.3 文本文件的输入/输出 302
11.4.4 二进制文件的输入/输出 305
11.4.5 文件的随机访问 306
11.5 重载I/O输入输出运算符 308
11.5.1 重载输出运算符“<<” 308
11.5.2 重载输入运算符“>>” 310
11.6 上机练习 311
第12章 模板和异常处理 313
12.1 函数模板 314
12.1.1 函数模板语法 314
12.1.2 函数模板实例化 315
12.1.3 使用函数模板实例 317
12.2 类模板 318
12.2.1 类模板的语法 318
12.2.2 类模板实例化 320
12.2.3 类模板的默认参数 321
12.3 标准模板库 322
12.4 异常处理 324
12.4.1 异常处理基础 324
12.4.2 异常处理机制 325
12.4.3 异常函数 329
12.5 上机练习 331
第13章 银行卡管理系统 333
13.1 功能需求 334
13.2 总体设计 334
13.2.1 总体功能模块设计 334
13.2.2 数据结构设计 335
13.2.3 程序界面设计 335
13.3 银行卡管理系统的实现 337
13.3.1 主函数的源代码 337
13.3.2 创建新卡模块的源代码 338
13.3.3 卡号登录模块的源代码 339
13.3.4 存款操作的源代码 340
13.3.5 取款操作的源代码 340
13.3.6 日志文件读/写的源代码 341
13.4 本章小结 341
第14章 成绩管理系统 343
14.1 功能需求 344
14.2 总体设计 344
14.2.1 系统功能结构 344
14.2.2 数据结构及全局变量/函数设计 345
14.2.3 程序界面设计 346
14.3 学生成绩管理系统的实现 349
14.3.1 主函数源代码 349
14.3.2 学生信息录入函数 353
14.3.3 学生信息查找函数 355
14.3.4 学生信息编辑函数 357
14.3.5 学生信息统计函数 361
14.3.6 学生成绩排序功能 363
14.3.7 文件读/写功能 368
14.4 本章小结 369
第15章 工资发放系统 371
15.1 总体设计 372
15.1.1 类的设计 372
15.1.2 虚函数的分析设计 372
15.2 工资单系统源代码 373
15.2.1 主函数源代码 374
15.2.2 基类Employee源代码 375
15.2.3 派生类Manager的源代码 376
15.2.4 派生类CommissionWorker的源代码 377
15.2.5 派生类HourlyWorker的源代码 379
15.2.6 派生类PieceWorker的源代码 380
15.3 本章小结 381
第16章 旅店管理系统 383
16.1 功能需求 384
16.2 总体设计 384
16.2.1 系统功能结构 384
16.2.2 数据结构以及全局函数设计 385
16.3 旅店管理系统实现 386
16.3.1 系统头文件 387
16.3.2 显示界面函数 388
16.3.3 客房信息录入函数 392
16.3.4 入住登记函数 394
16.3.5 退房结算函数 396
16.3.6 客房信息浏览函数 398
16.3.7 信息查询函数 399
16.3.8 信息删除和修改函数 404
16.3.9 客房信息插入函数 407
16.3.10 退出系统函数 408
16.3.11 其他辅助函数 409
16.4 系统运行界面 412
16.5 本章小结 415
第17章 图书管理系统 417
17.1 功能设计要求 418
17.2 总体设计 418
17.2.1 类的设计 418
17.2.2 系统功能结构 421
17.3 图书管理系统源代码 422
17.3.1 类的定义 422
17.3.2 类的成员函数实现 424
17.3.3 用户界面相关函数 432
17.3.4 读者维护模块 433
17.3.5 图书维护模块 434
17.3.6 系统管理员功能模块 435
17.3.7 普通管理员功能 436
17.3.8 系统main函数 438
17.4 本章小结 439