第1章 C++语言概述 1
1.1 工作场景导入 2
1.2 C++语言的发展 2
1.3 C++语言的特点 3
1.4 面向对象程序设计 4
1.5 C++程序的基本框架 5
1.5.1 最简单的C++程序 5
1.5.2 结构化程序设计框架 7
1.5.3 面向对象程序设计框架 7
1.6 C++程序的开发过程 9
1.6.1 创建项目 9
1.6.2 编辑 11
1.6.3 编译 12
1.6.4 链接 13
1.6.5 运行和调试 13
1.7 回到工作场景 13
1.8 工作实训营 14
1.9 本章小结 14
1.10 习题 15
第2章 数据类型、运算符和表达式 17
2.1 工作场景导入 18
2.2 标识符和关键字 18
2.2.1 标识符 18
2.2.2 关键字 19
2.3 C++语言的数据类型 20
2.3.1 整型 21
2.3.2 浮点型 21
2.3.3 字符型 22
2.3.4 布尔型 22
2.3.5 空类型 22
2.4 常量 23
2.4.1 逻辑型常量 23
2.4.2 整型常量 23
2.4.3 实型常量 24
2.4.4 字符型常量 25
2.4.5 字符串常量 26
2.5 变量 27
2.5.1 变量的定义 27
2.5.2 变量的赋值 28
2.5.3 符号常量声明语句 28
2.6 运算符和表达式 29
2.6.1 运算符和表达式的概念 29
2.6.2 运算符与运算类型 29
2.6.3 赋值运算 30
2.6.4 算术运算符和算术表达式 31
2.6.5 关系运算符和关系表达式 33
2.6.6 逻辑运算符和逻辑表达式 34
2.6.7 位运算 36
2.6.8 逗号表达式 39
2.6.9 优先级和结合性 39
2.6.10 数据类型转换 40
2.7 回到工作场景 43
2.8 工作实训营 44
2.9 本章小结 45
2.10 习题 45
第3章 基本控制结构 47
3.1 工作场景导入 48
3.2 C ++语句 48
3.3 顺序结构 51
3.4 选择结构 52
3.4.1 if语句 52
3.4.2 switch语句 57
3.5 循环结构 61
3.5.1 for语句 61
3.5.2 while语句 63
3.5.3 do...while语句 64
3.5.4 循环的嵌套 66
3.5.5 三种循环的比较 67
3.6 跳转语句 67
3.6.1 break语句 67
3.6.2 continue语句 68
3.6.3 goto语句 70
3.7 回到工作场景 71
3.8 工作实训营 73
3.9 本章小结 73
3.10 习题 74
第4章 函数 77
4.1 工作场景导入 78
4.2 函数的基本概念 78
4.3 函数定义 79
4.3.1 无参函数的定义 80
4.3.2 有参函数的定义 80
4.4 函数调用 82
4.4.1 函数调用的一般形式 82
4.4.2 函数调用的方式 82
4.4.3 函数调用的注意点 84
4.5 函数声明 84
4.5.1 进行函数声明 85
4.5.2 函数声明的作用域 87
4.6 函数返回类型 88
4.7 函数参数 89
4.7.1 参数的传递方式 89
4.7.2 默认参数 90
4.8 函数重载 92
4.8.1 重载函数的定义 93
4.8.2 重载函数的绑定 95
4.9 内联函数 96
4.10 函数嵌套与递归 97
4.10.1 函数嵌套 97
4.10.2 函数递归 98
4.11 变量作用域与存储类型 100
4.11.1 作用域 100
4.11.2 局部变量和全局变量 103
4.11.3 动态变量和静态变量 107
4.11.4 变量的存储类型 108
4.12 回到工作场景 111
4.13 工作实训营 112
4.14 本章小结 113
4.15 习题 113
第5章 自定义数据类型和预处理 117
5.1 工作场景导入 118
5.2 数组 118
5.2.1 一维数组 119
5.2.2 二维数组 122
5.2.3 多维数组 127
5.2.4 字符数组 128
5.3 指针 134
5.3.1 指针的基本概念 134
5.3.2 指针变量的定义 135
5.3.3 指针的操作 136
5.3.4 常量指针和指针常量 139
5.3.5 指针与数组 140
5.3.6 指针与函数 144
5.3.7 指针数组与数组指针 150
5.3.8 多级指针 152
5.3.9 动态存储分配 153
5.4 引用 156
5.5 结构体 158
5.5.1 结构体类型的声明 158
5.5.2 结构体变量 159
5.5.3 结构体变量的引用与初始化 161
5.5.4 结构体数组 163
5.5.5 结构体指针 165
5.5.6 用结构体指针操作链表 168
5.6 共用体 172
5.6.1 共用体类型定义 172
5.6.2 共用体变量的引用 174
5.7 枚举类型 175
5.7.1 枚举类型的定义 175
5.7.2 给枚举变量赋初值 175
5.8 类型定义typedef 176
5.9 编译预处理 178
5.9.1 文件包含 178
5.9.2 宏定义 179
5.9.3 条件编译 183
5.10 回到工作场景 185
5.11 工作实训营 191
5.12 本章小结 191
5.13 习题 192
第6章 类和对象 197
6.1 工作场景导入 198
6.2 类 198
6.2.1 类的定义 198
6.2.2 类的数据成员 199
6.2.3 类的成员函数 199
6.2.4 类成员的访问控制 202
6.3 对象 203
6.3.1 对象的定义 204
6.3.2 对象成员的访问 204
6.3.3 对象的存储 208
6.3.4 对象的赋值 210
6.3.5 成员对象 210
6.4 构造函数和析构函数 211
6.4.1 构造函数 211
6.4.2 析构函数 220
6.5 对象的生存期 223
6.5.1 全局对象、静态对象与局部对象 223
6.5.2 自由存储对象 225
6.6 this指针 227
6.7 静态成员 229
6.7.1 静态数据成员 229
6.7.2 静态成员函数 231
6.8 const成员 232
6.8.1 const对象 232
6.8.2 const成员函数 233
6.8.3 常量数据成员 235
6.9 友元 235
6.9.1 友元函数 235
6.9.2 友元类 239
6.10 对象数组 240
6.11 回到工作场景 241
6.12 工作实训营 243
6.13 本章小结 244
6.14 习题 244
第7章 继承和多态 247
7.1 工作场景导入 248
7.2 继承与派生 248
7.2.1 基本概念 248
7.2.2 单继承 249
7.3 派生类对基类成员的访问 253
7.3.1 公有继承 253
7.3.2 私有继承 255
7.4 多继承与虚基类 256
7.4.1 多重继承的定义 256
7.4.2 多继承中的二义性问题 257
7.4.3 虚基类的定义 260
7.4.4 虚基类的构造函数 261
7.5 派生类的构造函数和析构函数 263
7.5.1 派生类的构造函数 263
7.5.2 派生类的析构函数 266
7.6 子类型关系 269
7.7 虚函数与多态性 271
7.7.1 多态性的概念 271
7.7.2 虚函数 271
7.7.3 虚析构函数 274
7.7.4 纯虚函数与抽象类 275
7.8 回到工作场景 279
7.9 工作实训营 283
7.10 本章小结 284
7.11 习题 284
第8章 运算符重载 289
8.1 工作场景导入 290
8.2 运算符函数与运算符重载 290
8.3 典型运算符的重载 292
8.3.1 实现一个分数类 292
8.3.2 重载单目运算符 293
8.3.3 重载双目运算符 297
8.3.4 其他常用运算符的重载 300
8.4 重载运算符的基本原则 312
8.5 回到工作场景 316
8.6 工作实训营 319
8.7 本章小结 320
8.8 习题 320
第9章 模板 323
9.1 工作场景导入 324
9.2 模板的概念 324
9.3 函数模板 326
9.3.1 函数模板的定义与调用 326
9.3.2 函数模板的使用 328
9.4 类模板 330
9.4.1 类模板的定义与使用 330
9.4.2 类模板的派生与继承 335
9.5 C++标准模板库 336
9.6 回到工作场景 338
9.7 工作实训营 342
9.8 本章小结 342
9.9 习题 342
第10章 C++流 345
10.1 工作场景导入 346
10.2 C++流的概念 346
10.2.1 C++流的逻辑结构 347
10.2.2 基本I/O流类体系 349
10.2.3 预定义流对象 355
10.2.4 提取运算符(>>)和插入运算符(<<) 356
10.2.5 其他输入/输出方式 357
10.2.6 用户自定义的I/O 361
10.3 输入/输出的格式控制 361
10.3.1 默认的输入/输出格式 361
10.3.2 格式标志与格式控制 361
10.3.3 输入/输出宽度的控制 362
10.3.4 浮点数输出方式的控制 362
10.3.5 输出精度的控制 363
10.3.6 对齐方式的控制 364
10.3.7 填充字符的控制 365
10.3.8 插入换行符 365
10.3.9 小数点处理方式的控制 366
10.3.10 其他格式控制方法 367
10.4 文件流 368
10.4.1 文件的概念 368
10.4.2 文件输出 370
10.4.3 文件输入 375
10.4.4 文件随机存取 377
10.5 基于I/O类库的字符串I/O 381
10.6 回到工作场景 383
10.7 工作实训营 388
10.8 本章小结 388
10.9 习题 389
第11章 异常处理 391
11.1 工作场景导入 392
11.2 异常的概念 392
11.3 C++的异常处理机制 395
11.3.1 抛出异常throw 395
11.3.2 捕获和处理异常try...catch 396
11.3.3 自定义异常类 398
11.3.4 异常处理的嵌套 400
11.3.5 异常规范 402
11.3.6 函数堆栈的回退 403
11.4 回到工作场景 407
11.5 工作实训营 410
11.6 本章小结 410
11.7 习题 410