第1篇 基础入门 3
第1章 揭开C++的神秘面纱——我的第一个C++程序 3
1.1认识C++ 4
1.2 C++的优势 5
1.3常见的C++开发环境 6
1.4新手的福音——Visual Studio 2017集成环境 8
1.4.1安装Visual Studio 2017的条件 8
1.4.2安装Visual Studio 2017 8
1.5熟悉Visual Studio 2017开发界面 10
1.5.1创建项目 10
1.5.2菜单栏 12
1.5.3工具栏 13
1.5.4解决方案资源管理器 13
1.5.5【属性】面板 14
1.5.6【错误列表】面板 14
1.5.7【输出】面板 14
1.6实战演练——第一个C++项目 15
1.7理解C++语言的翻译过程 16
1.8大神解惑 17
1.9跟我学上机 18
第2章 零基础开始学习——C++的程序结构 19
2.1分析C++程序的结构 20
2.1.1 #include指令及头文件 20
2.1.2 main函数 21
2.1.3变量声明和定义 22
2.1.4函数的声明 24
2.1.5关于注释 25
2.2编译前的预处理 26
2.3输入和输出数据 29
2.3.1 cout输出数据 29
2.3.2 cin读取输入数据 32
2.4命名空间 33
2.4.1命名空间的定义 33
2.4.2 using关键字 34
2.4.3命名空间std 35
2.5实战演练——经典的入门程序 36
2.6大神解惑 38
2.7跟我学上机 38
第3章 程序中的数据种类——数据类型 39
3.1标识符 40
3.1.1保留字 40
3.1.2标识符命名 41
3.2变量与常量 41
3.2.1变量 41
3.2.2常量 44
3.3基本变量类型 46
3.3.1整数类型 46
3.3.2字符类型 48
3.3.3浮点数类型 50
3.3.4布尔类型 51
3.4查询变量的类型和内存空间大小 52
3.5自定义数据类型 53
3.6实战演练——对比不同数据类型的长度 57
3.7大神解惑 57
3.8跟我学上机 58
第4章 谁来操作数据——灵活使用运算符 59
4.1运算符概述 60
4.1.1赋值运算符 60
4.1.2算术运算符 61
4.1.3关系运算符 62
4.1.4逻辑运算符 64
4.1.5自增和自减运算符 65
4.1.6位逻辑运算符 66
4.1.7移位运算符 68
4.1.8三元运算符 69
4.1.9逗号运算符 70
4.1.10类型转换运算符 71
4.2运算符优先级和结合性 72
4.2.1运算符优先级 72
4.2.2运算符结合性 73
4.3实战演练——综合运用运算符 75
4.4大神解惑 76
4.5跟我学上机 77
第5章 程序的执行方向——程序流程控制 79
5.1顺序语句 80
5.2条件判断语句 81
5.2.1 if条件 81
5.2.2 if-else条件 82
5.2.3条件运算符 83
5.3循环语句 84
5.3.1 for循环 85
5.3.2 while循环 86
5.3.3 do-while循环 87
5.4多重选择——switch语句 88
5.5跳出循环 90
5.5.1 continue语句 90
5.5.2 break语句 90
5.5.3 goto语句 91
5.6实战演练——流程控制综合应用 92
5.7大神解惑 95
5.8跟我学上机 96
第Ⅱ篇 核心技术 99
第6章C++的灵魂——函数的应用 99
6.1函数的基本结构 100
6.1.1函数的声明、定义和调用 100
6.1.2参数的传递方式 101
6.1.3函数的默认参数 103
6.1.4函数的返回值 104
6.2变量的作用域 105
6.2.1局部变量 105
6.2.2静态局部变量 106
6.2.3外部变量 107
6.2.4寄存器变量 108
6.3特殊函数调用方式——递归调用 108
6.4内联函数 109
6.5预处理器 110
6.5.1 #define预处理器 110
6.5.2 #define的作用 111
6.5.3 const修饰符 112
6.6函数的重载 113
6.7实战演练——汉诺塔问题函数 114
6.8大神解惑 116
6.9跟我学上机 116
第7章 特殊的元素集合——数组与字符串 117
7.1一维数组 118
7.1.1一维数组的声明 118
7.1.2数组初始化 119
7.1.3数组的操作 120
7.2二维数组和多维数组 121
7.2.1二维数组的声明 121
7.2.2二维数组的使用和存取 122
7.2.3多维数组 123
7.3数组与函数 125
7.3.1一维数组作为函数的参数 125
7.3.2传送多维数组到函数 126
7.4字符串类 127
7.4.1字符串的声明 127
7.4.2字符串的输入和输出 128
7.4.3字符串处理 129
7.5实战演练1——判断字符串回文 132
7.6实战演练2——输出斐波那契数列 134
7.7大神解惑 135
7.8跟我学上机 136
第8章 灵活调用内存地址——指针 137
8.1指针概述 138
8.1.1什么是指针 138
8.1.2为什么要用指针 138
8.1.3指针的地址 139
8.2指针变量 139
8.2.1指针变量的声明 139
8.2.2指针变量的使用 140
8.3指针与函数 141
8.3.1指针传送到函数中 141
8.3.2返回值为指针的函数 142
8.3.3函数指针 143
8.4指针与数组 144
8.4.1指针的算术运算 145
8.4.2利用指针存储一维数组的元素 146
8.4.3利用指针传递一维数组到函数中 147
8.5指针与字符串 147
8.6 const指针 148
8.7 void指针 149
8.8指向指针的指针 149
8.9动态内存配置 150
8.9.1使用基本数据类型做动态配置 151
8.9.2使用数组做动态配置 152
8.10实战演练——判断字符串中有多少个整数 153
8.11大神解惑 155
8.12跟我学上机 156
第9章 灵活定义数据类型——结构体、共用体和枚举类型 157
9.1结构体 158
9.1.1结构体的声明 158
9.1.2结构体变量的初始化与使用 159
9.1.3结构体数组初始化 161
9.2将结构体变量作为函数参数 162
9.2.1将整个结构体传送到函数 162
9.2.2传送结构体的地址到函数 163
9.3共用体 164
9.3.1共用体的定义和声明 164
9.3.2共用体类型的初始化和使用 165
9.3.3 struct和union的差异 166
9.4枚举类型 167
9.4.1枚举类型的定义和声明 167
9.4.2枚举类型的初始化和使用 168
9.5实战演练——学生信息登记表 169
9.6大神解惑 172
9.7跟我学上机 172
第10章 主流的编程思想——认识面向对象编程 173
10.1面向对象编程概述 174
10.1.1面向对象编程的几个概念 174
10.1.2面向对象编程与面向过程编程的区别 175
10.2认识类 175
10.2.1类的基本概念 175
10.2.2类的定义 175
10.2.3类对象的生成 177
10.2.4类对象指针 178
10.3成员函数 180
10.4嵌套类 182
10.5 const成员函数 182
10.6类成员的访问控制 184
10.6.1私有成员 184
10.6.2公有成员 185
10.6.3保护成员 186
10.7静态成员 187
10.7.1静态数据成员 187
10.7.2静态成员函数 189
10.8友元函数 190
10.9实战演练——栈类的实现 191
10.10大神解惑 193
10.11跟我学上机 194
第11章 类的特殊函数——构造函数和析构函数 195
11.1构造函数初始化类对象 196
11.1.1什么是构造函数 196
11.1.2使用构造函数 196
11.2析构函数清除类对象 198
11.2.1析构函数的概念 198
11.2.2析构函数的调用 198
11.3默认构造函数 200
11.4重载构造函数 201
11.4.1重载构造函数的作用 201
11.4.2重载构造函数的调用 201
11.5类对象数组的初始化 202
11.5.1类对象数组调用 203
11.5.2类对象数组和默认构造函数 204
11.5.3类对象数组和析构函数 206
11.6拷贝构造函数 207
11.6.1拷贝构造函数的概念 207
11.6.2深拷贝和浅拷贝 208
11.7实战演练——构造函数和析构函数的应用 210
11.8大神解惑 212
11.9跟我学上机 212
第Ⅲ篇 高级应用 215
第12章 赋予新功能——运算符的重载 215
12.1什么是运算符重载 216
12.1.1运算符重载的形式 216
12.1.2可重载的运算符 218
12.2重载前置运算符和后置运算符 219
12.2.1重载前置运算符 219
12.2.2重载后置运算符 221
12.3插入运算符和析取运算符的重载 222
12.3.1插入运算符重载 222
12.3.2析取运算符重载 223
12.4常用运算符的重载 225
12.4.1“<”运算符的重载 225
12.4.2“+”运算符的重载 226
12.4.3“=”赋值运算符重载 227
12.5实战演练——重载运算符综合应用 230
12.6大神解惑 231
12.7跟我学上机 232
第13章 实现代码重用——类的继承 233
13.1继承的基本概念 234
13.1.1基类和继承类 234
13.1.2简单的基础实例 235
13.2调用父类中的构造函数 240
13.3子类存取父类成员 243
13.3.1私有成员的存取 243
13.3.2继承与静态成员 244
13.4多继承 246
13.5实战演练——继承的综合应用 248
13.6大神解惑 250
13.7跟我学上机 250
第14章 实现多态性——虚函数和抽象类 251
14.1什么是虚函数 252
14.1.1虚函数的作用 252
14.1.2动态绑定和静态绑定 253
14.2抽象类与纯虚函数 255
14.2.1定义纯虚函数 255
14.2.2抽象类的作用 256
14.2.3虚析构函数 257
14.3抽象类的多重继承 259
14.4虚函数表 260
14.4.1什么是虚函数表 260
14.4.2继承关系的虚函数表 262
14.5实战演练——抽象类的综合应用 263
14.6大神解惑 266
14.7跟我学上机 266
第15章 数据存储——C++操作文件 267
15.1文件的基本概念 268
15.1.1文件I/O 268
15.1.2文件顺序读写 271
15.1.3随机文件读写 271
15.2文件的打开与关闭 273
15.2.1文件的打开 273
15.2.2文件的关闭 275
15.3文本文件的处理 275
15.3.1将变量写入文件 275
15.3.2将变量写入文件尾部 276
15.3.3从文本文件中读入变量 277
15.3.4使用get()、getline()和put()函数 278
15.4处理二进制文件 280
15.5实战演练——文件操作 282
15.6大神解惑 284
15.7跟我学上机 285
第16章 解决问题的法宝——异常处理 287
16.1异常的基本概念 288
16.2异常处理机制 288
16.3抛出异常 289
16.4重新抛出异常 291
16.5捕获所有异常 292
16.6未捕捉到的异常 293
16.7标准异常 294
16.8异常规范 294
16.9异常与继承 295
16.10自定义异常类 296
16.11捕获多个异常 298
16.12实战演练——异常处理应用 299
16.13大神解惑 301
16.14跟我学上机 302
第17章C++的高级技能——模板与类型转换 303
17.1模板 304
17.1.1函数模板 304
17.1.2类模板 305
17.1.3模板参数 307
17.1.4模板的特殊化 308
17.1.5重载和函数模板 309
17.2类型识别和强制转换运算符 311
17.2.1运行时类型识别 311
17.2.2强制类型转换运算符 314
17.3实战演练——模板的综合应用 316
17.4大神解惑 318
17.5跟我学上机 318
第18章 控制元素的存储和访问——容器和迭代器 321
18.1 STL 322
18.2迭代器 322
18.3顺序容器 323
18.3.1向量 323
18.3.2双端队列 325
18.3.3列表 326
18.4关联容器 327
18.4.1集合和多集 327
18.4.2映射和多重映射 329
18.5容器适配器 330
18.5.1栈 330
18.5.2队列 331
18.5.3优先级队列 332
18.6实战演练——容器的综合操作 333
18.7大神解惑 338
18.8跟我学上机 338
第Ⅳ篇 项目开发实战 341
第19章 项目实训1——开发计算器助手 341
19.1需求分析 342
19.2功能分析 342
19.3开发前的准备工作 343
19.4系统代码编写 343
19.4.1 CalculatorAssistant.h和CalculatorAssistant.cpp文件 344
19.4.2 Complex.h和Complex.cpp文件 347
19.4.3 Fraction.h和Fraction.cpp文件 351
19.4.4 main.cpp文件 356
19.5系统运行 356
19.6项目总结 358
第20章 项目实训2——开发汽车信息管理系统 359
20.1需求分析 360
20.2功能分析 360
20.3开发前的准备工作 362
20.4系统代码编写 362
20.4.1 Date.h文件 362
20.4.2 DateException.h文件 363
20.4.3 Vehicle.h和Vehicle.cpp文件 364
20.4.4 VehicleManage.h和VehicleManage.cpp文件 366
20.4.5 Main.cpp文件 373
20.5系统运行 376
20.6项目总结 378
第21章 项目实训3——开发银行交易系统 379
21.1需求分析 380
21.2功能分析 380
21.3开发前的准备工作 381
21.4系统代码编写 382
21.4.1交易流程处理、余额查询、存款和取款等功能 382
21.4.2相关设备模拟 388
21.4.3交易设备、数据库和账户等具体实现 390
21.4.4设备处理、交易处理、操作处理和验证处理等功能 394
21.4.5主程序运行入口 398
21.5系统运行 398
21.6项目总结 399
第22章 项目实训4——开发学校职工信息管理系统 401
22.1需求分析 402
22.2功能分析 402
22.3开发前的准备工作 404
22.4系统代码编写 404
22.4.1职工信息的数据结构的基类属性和成员方法 404
22.4.2各人员类的声明、定义和实现 407
22.4.3系统职工信息增删改查功能的声明、定义 413
22.4.4系统增删改查以及菜单功能的实现 416
22.4.5主程序运行入口 432
22.5系统运行 432
22.6项目总结 434