目录
第1篇 基础知识
第1章 绪论 2
视频讲解:32分钟
1.1 认识C++ 2
1.1.1 C++的发展历程 2
1.1.2 C/C++领域的杰出人物 3
1.1.3 C++语言的特点 4
1.2 认识C++程序代码 5
1.2.1 C++程序代码的组成 5
1.2.2 从源代码到可执行程序 5
1.3 C++常用开发环境 6
1.4 C++工程项目文件 8
1.5 使用Dev C++创建程序 8
第2章 数据类型 11
视频讲解:162分钟
2.1 第一个C++程序 11
2.2 关键字和标识符 13
2.3 基本数据类型 13
2.4 常量 14
2.4.1 整型常量 14
2.4.2 浮点型常量 15
2.4.3 字符常量 15
2.4.4 字符串常量 16
2.4.5 其他常量 16
2.5 变量 17
2.5.1 变量的声明和定义 17
2.5.2 整型变量 17
2.5.3 浮点型变量 18
2.5.4 变量赋值 20
2.5.5 字符型变量 20
2.6 数据的输入与输出 21
2.6.1 C++中的流 21
2.6.2 格式化输出 23
2.7 实践与练习 29
第3章 运算符与表达式 30
视频讲解:119分钟
3.1 表达式 30
3.2 赋值运算符和赋值表达式 31
3.3 算术运算符和算术表达式 31
3.3.1 算术运算符 31
3.3.2 算术表达式 32
3.3.3 自增、自减运算符 32
3.4 关系运算符和关系表达式 33
3.4.1 关系运算符 33
3.4.2 关系表达式 33
3.5 逻辑运算符和逻辑表达式 34
3.5.1 逻辑运算符 34
3.5.2 逻辑表达式 35
3.6 逗号运算符和逗号表达式 36
3.7 位运算符 36
3.8 移位运算符 37
3.9 复合赋值运算符 40
3.10 sizeof运算符 40
3.11 运算符的优先级和结合性 41
3.12 数据类型转换 42
3.12.1 隐式类型转换 42
3.12.2 强制类型转换 43
3.13 判断左值与右值 44
3.14 实践与练习 45
第4章 条件判断语句 46
视频讲解:102分钟
4.1 语句、程序结构和流程图 46
4.1.1 语句 46
4.1.2 程序结构 47
4.1.3 流程图 47
4.2 if语句 48
4.2.1 简单if语句 48
4.2.2 if…else语句 49
4.2.3 else if语句 50
4.3 if语句的嵌套 52
4.4 条件运算符 54
4.5 switch语句 55
4.6 实践与练习 58
第5章 循环语句 60
视频讲解:85分钟
5.1 while循环 60
5.2 do...while循环 62
5.3 for循环 63
5.4 循环控制 66
5.4.1 循环控制变量 66
5.4.2 break语句 66
5.4.3 continue语句 67
5.4.4 goto语句 68
5.5 循环嵌套 69
5.6 实践与练习 72
第6章 函数 74
视频讲解:203分钟
6.1 函数的定义和声明 74
6.1.1 函数的定义 74
6.1.2 函数的声明 75
6.2 函数的参数及返回值 76
6.2.1 函数的形参与实参 76
6.2.2 函数的调用与返回值 76
6.2.3 空函数 78
6.2.4 默认参数 79
6.3 嵌套调用与递归调用 80
6.3.1 嵌套调用 80
6.3.2 递归调用 80
6.4 变量的作用域 84
6.5 函数重载 85
6.6 内联函数 86
6.7 变量的存储类型 87
6.7.1 auto变量 87
6.7.2 static变量 88
6.7.3 register变量 89
6.7.4 extern变量 89
6.8 实践与练习 90
第7章 数组、指针和引用 92
视频讲解:245分钟
7.1 一维数组 92
7.1.1 一维数组的声明 92
7.1.2 一维数组元素的引用 93
7.1.3 一维数组的初始化 93
7.2 二维数组 95
7.2.1 二维数组的声明 95
7.2.2 二维数组元素的引用 95
7.2.3 二维数组的初始化 96
7.3 字符数组 97
7.3.1 字符数组的声明与初始化 98
7.3.2 字符串 98
7.3.3 字符串连接函数strcat() 100
7.3.4 字符串复制函数strcpy() 101
7.3.5 字符串比较函数strcmp() 102
7.3.6 字符串长度函数strlen() 103
7.4 指针 103
7.4.1 变量、地址与指针 103
7.4.2 指针变量 104
7.4.3 指针运算符和取地址运算符 107
7.4.4 指针的自增、自减运算 108
7.4.5 指向空的指针与空类型指针 109
7.4.6 指向常量的指针与指针常量 110
7.5 指针与数组 111
7.5.1 数组的存储方式 111
7.5.2 指针与一维数组 111
7.5.3 指针与二维数组 113
7.5.4 指针与字符数组 114
7.5.5 基于指针的字符串处理函数 115
7.6 指针在函数中的应用 119
7.6.1 传递地址 119
7.6.2 指向函数的指针 120
7.6.3 空指针调用函数 121
7.6.4 函数返回值为指针 121
7.7 指针数组 122
7.8 安全使用指针 124
7.8.1 内存分配 124
7.8.2 内存安全 126
7.9 引用 129
7.9.1 引用概述 129
7.9.2 使用引用传递函数参数 131
7.10 数组做函数参数 132
7.11 实践与练习 134
第8章 构造数据类型 136
视频讲解:96分钟
8.1 结构体 136
8.1.1 结构体的定义 136
8.1.2 结构体变量的声明和初始化 137
8.1.3 结构体成员的引用 138
8.1.4 结构体的嵌套 139
8.1.5 结构体的大小 141
8.2 结构体与函数 141
8.2.1 结构体变量做函数参数 142
8.2.2 结构体指针做函数参数 142
8.3 结构体数组 143
8.3.1 结构体数组的声明和初始化 143
8.3.2 指针访问结构体数组 144
8.4 共用体 145
8.4.1 共用体的定义和使用 145
8.4.2 共用体的大小 146
8.4.3 共用体的特点 147
8.5 枚举类型 147
8.5.1 枚举类型的定义 147
8.5.2 枚举变量 148
8.5.3 枚举类型的运算 149
8.6 自定义数据类型 150
8.7 使用宏定义替换复杂的数据 151
8.8 实践与练习 155
第2篇 面向对象
第9章 面向对象编程 158
视频讲解:39分钟
9.1 面向对象概述 158
9.1.1 对象 158
9.1.2 类 158
9.1.3 封装 159
9.1.4 继承 159
9.1.5 多态 159
9.2 面向对象编程与面向过程编程 160
9.2.1 面向过程编程 160
9.2.2 面向对象编程 160
9.3 统一建模语言 161
9.3.1 UML概述 161
9.3.2 UML的结构 162
9.3.3 面向对象的建模 164
第10章 类和对象 165
视频讲解:197分钟
10.1 C++类 165
10.1.1 类的声明与定义 166
10.1.2 类的实现 166
10.1.3 对象的声明和引用 169
10.2 构造函数 171
10.2.1 构造函数概述 171
10.2.2 复制构造函数 171
10.3 析构函数 173
10.4 类成员 174
10.4.1 访问类成员 174
10.4.2 内联成员函数 176
10.4.3 静态类成员 176
10.4.4 隐藏的this指针 178
10.4.5 嵌套类 179
10.4.6 局部类 180
10.5 友元 180
10.5.1 友元概述 180
10.5.2 友元类 182
10.5.3 友元函数 183
10.6 命名空间 185
10.6.1 定义命名空间 185
10.6.2 在多个文件中定义命名空间 187
10.6.3 定义嵌套的命名空间 188
10.7 实践与练习 189
第11章 继承与派生 190
视频讲解:112分钟
11.1 继承 190
11.1.1 类的继承 190
11.1.2 继承后的可访问性 192
11.1.3 构造函数的访问顺序 194
11.1.4 派生类中显式调用基类构造函数 195
11.1.5 派生类屏蔽基类的同名成员函数 196
11.2 重载运算符 197
11.2.1 为什么要重载运算符 197
11.2.2 重载运算符的形式与规则 199
11.2.3 重载运算符的运算 200
11.2.4 转换运算符 202
11.3 多重继承 203
11.3.1 多重继承的定义 203
11.3.2 多重继承的构造顺序 204
11.4 多态 206
11.4.1 虚函数概述 206
11.4.2 利用虚函数实现动态绑定 206
11.4.3 虚继承 208
11.5 抽象类 209
11.5.1 纯虚函数和抽象类 209
11.5.2 实现抽象类中的成员函数 211
11.6 实践与练习 213
第3篇 高级应用
第12章 模板 216
视频讲解:32分钟
12.1 C++泛型编程和模板 216
12.1.1 认识C++泛型编程 216
12.1.2 强类型语言与C++模板 217
12.2 函数模板 218
12.2.1 函数模板的定义 218
12.2.2 函数模板的使用 219
12.2.3 重载函数模板 220
12.3 类模板 221
12.3.1 类模板的定义与声明 221
12.3.2 简单类模板 223
12.3.3 默认模板参数 223
12.3.4 为具体类型的参数提供默认值 224
12.3.5 有界数组模板 225
12.3.6 类模板的定制 226
12.4 链表类模板 229
12.4.1 链表的基本概念 229
12.4.2 设计单链表 230
12.4.3 链表类模板的使用 231
12.4.4 类模板的静态数据成员 233
12.5 实践与练习 235
第13章 标准模板库 236
视频讲解:166分钟
13.1 C++ STL基础 236
13.1.1 认识STL 237
13.1.2 常见的数据结构 237
13.2 STL容器与迭代器 240
13.2.1 STL容器 240
13.2.2 STL迭代器 241
13.2.3 STL容器通用操作 243
13.3 序列式容器 243
13.3.1 序列式容器概述 243
13.3.2 array容器 244
13.3.3 vector容器 245
13.3.4 deque容器 248
13.3.5 list容器 250
13.3.6 forward_list容器 253
13.4 字符串容器 254
13.4.1 字符串容器概述 254
13.4.2 字符串容器常用函数 254
13.4.3 转换为C语言风格的字符串 257
13.5 关联式容器 257
13.5.1 关联式容器概述 257
13.5.2 pair类模板 258
13.5.3 map容器 260
13.5.4 multimap容器 262
13.5.5 set容器 263
13.5.6 multiset容器 266
13.6 算法 267
13.6.1 非修正序列算法 267
13.6.2 修正序列算法 269
13.6.3 排序算法 272
13.6.4 数值算法 275
13.7 实践与练习 279
第14章 RTTI与异常处理 280
视频讲解:18分钟
14.1 RTTI 280
14.1.1 RTTI的定义 280
14.1.2 RTTI与引用 281
14.1.3 RTTI与多重继承 282
14.1.4 RTTI映射语法 283
14.2 异常处理 285
14.2.1 抛出异常 285
14.2.2 捕获异常 285
14.2.3 异常匹配 287
14.2.4 标准异常类 288
第15章 程序调试 290
视频讲解:21分钟
15.1 程序错误的常见类型 290
15.2 调试工具的使用 292
15.2.1 创建调试程序 292
15.2.2 进入调试状态 292
15.2.3 进行调试 293
15.2.4 变量的跟踪与查看 294
15.2.5 调试的注意事项 295
第16章 文件操作 296
视频讲解:35分钟
16.1 C++输入/输出流 296
16.1.1 C++中的流类库 296
16.1.2 ios类中的枚举常量 297
16.1.3 流的输入/输出 298
16.2 打开文件 299
16.3 读写文件 301
16.3.1 文件流 301
16.3.2 写入文本文件 303
16.3.3 读取文本文件 303
16.3.4 读写二进制文件 304
16.3.5 复制文件 305
16.4 文件指针的移动 306
16.4.1 文件错误与状态 306
16.4.2 向文件中追加写入 307
16.4.3 文件结尾的判断 308
16.4.4 在指定位置读写文件 309
16.5 文件和流的关联和分离 310
16.6 删除文件 311
16.7 实践与练习 312
第17章 网络通信 313
视频讲解:20分钟
17.1 TCP/IP协议 313
17.1.1 OSI参考模型 313
17.1.2 TCP/IP参考模型 314
17.1.3 IP地址 315
17.1.4 数据包格式 315
17.2 套接字 317
17.2.1 Winsock套接字 317
17.2.2 Winsock的使用 318
17.2.3 套接字阻塞模式 322
17.2.4 字节顺序 322
17.2.5 面向连接流 323
17.2.6 面向无连接流 323
17.3 简单协议通信 324
17.3.1 服务器端程序 324
17.3.2 客户端程序 326
17.4 实践与练习 328
第4篇 项目实战
第18章 酒店客房管理系统 330
视频讲解:30分钟
18.1 开发背景 330
18.2 系统设计 331
18.2.1 系统功能结构 331
18.2.2 业务流程图 331
18.2.3 系统预览 332
18.2.4 数据库设计 333
18.3 主窗体设计 334
18.4 登录模块设计 339
18.4.1 登录模块技术分析 339
18.4.2 登录模块设计过程 340
18.5 客房预订模块设计 344
18.5.1 客房预订模块技术分析 344
18.5.2 客房预订模块实现过程 344
18.6 追加押金模块设计 348
18.6.1 追加押金模块技术分析 348
18.6.2 追加押金模块实现过程 349
18.7 调房登记模块设计 353
18.7.1 调房登记模块技术分析 353
18.7.2 调房登记模块实现过程 353
18.8 客房销售报表模块设计 358
18.8.1 客房销售报表模块技术分析 358
18.8.2 客房销售报表模块实现过程 358
18.9 项目文件清单 365
第19章 制作游戏外挂——植物大战僵尸修改器 366
视频讲解:6分钟
19.1 开发背景 366
19.2 系统功能设计 367
19.2.1 系统功能结构 367
19.2.2 业务流程图 367
19.3 系统开发环境要求 368
19.4 修改器原理介绍 368
19.5 项目目录结构预览 370
19.6 修改器界面开发 371
19.6.1 新建项目 371
19.6.2 去除多余控件 372
19.6.3 完成修改器主界面 373
19.6.4 添加“进程列表”对话框 374
19.7 修改阳光数量(内存搜索功能) 375
19.7.1 列出所有进程 375
19.7.2 打开游戏进程 376
19.7.3 搜索阳光数量位置 376
19.7.4 修改阳光数量 378
19.7.5 使用方法 378
19.8 注入游戏中的动态链接库(DLL) 382
19.8.1 创建DLL项目 382
19.8.2 修改器界面介绍 384
19.8.3 注入DLL到游戏进程 384
19.9 修改器核心功能实现 385
19.9.1 按HOME键调出游戏修改器 386
19.9.2 任意修改阳光、金钱数量 387
19.9.3 调用种植、铲除植物功能 388
19.9.4 自动收集阳光和金钱 389
19.9.5 僵尸全部出动 390
19.9.6 忽略地形,重叠种植 391
19.9.7 植物种植无冷却时间 392
19.10 开发总结 393