第1篇 基础知识
第1章 绪论3
视频讲解:1小时18分钟
1.1 C++历史背景4
1.1.1 20世纪最伟大的发明4
1.1.2 C++发展历程4
1.1.3 C++中的杰出人物5
1.2 常用开发环境6
1.2.1 Visual C++6.06
1.2.2 Visual C++20087
1.2.3 GCC/G++8
1.2.4 Dev-C8
1.2.5 Eclipse9
1.3 认知C++程序代码9
1.4 C++工程项目文件10
1.5 使用VC创建程序11
1.6 编译与连接过程14
1.7 C++的特点17
1.8 小结17
第2章 数据类型19
视频讲解:1小时26分钟
2.1 第一个C++程序20
2.1.1 #INCLUDE指令20
2.1.2 注释20
2.1.3 main函数21
2.1.4 函数体21
2.1.5 函数返回值21
2.2 数据类型21
2.3 常量及符号22
2.3.1 整型常量23
2.3.2 实型常量24
2.3.3 字符常量24
2.3.4 字符串常量25
2.3.5 其他常量26
2.4 变量26
2.4.1 标识符26
2.4.2 变量与变量说明27
2.4.3 整型变量27
2.4.4 实型变量28
2.4.5 变量赋值28
2.4.6 变量赋初值29
2.4.7 字符变量29
2.5 数据输入与输出30
2.5.1 控制台屏幕31
2.5.2 C++语言中的流31
2.5.3 流操作的控制33
2.6 小结40
2.7 实践与练习41
第3章 表达式与语句43
视频讲解:55分钟
3.1 运算符44
3.1.1 算术运算符44
3.1.2 关系运算符45
3.1.3 逻辑运算符46
3.1.4 赋值运算符47
3.1.5 位运算48
3.1.6 移位运算符50
3.1.7 sizeof运算符52
3.1.8 条件运算符52
3.1.9 逗号运算符53
3.2 结合性和优先级53
3.3 表达式54
3.3.1 算术表达式55
3.3.2 关系表达式55
3.3.3 条件表达式55
3.3.4 赋值表达式56
3.3.5 逻辑表达式56
3.3.6 逗号表达式56
3.3.7 表达式中的类型转换58
3.4 语句60
3.5 小结61
3.6 实践与练习61
第4章 条件判断语句63
视频讲解:35分钟
4.1 决策分支64
4.2 判断语句65
4.2.1 第一种形式的判断语句65
4.2.2 第二种形式的判断语句67
4.2.3 第三种形式的判断语句69
4.3 使用条件运算符进行判断70
4.4 switch语句72
4.5 判断语句的嵌套75
4.6 小结77
4.7 实践与练习77
第1篇 基础知识
第1章 绪论3
视频讲解:1小时18分钟
1.1 C++历史背景4
1.1.1 20世纪最伟大的发明4
1.1.2 C++发展历程4
1.1.3 C++中的杰出人物5
1.2 常用开发环境6
1.2.1 Visual C++6.06
1.2.2 Visual C++20087
1.2.3 GCC/G++8
1.2.4 Dev-C8
1.2.5 Eclipse9
1.3 认知C++程序代码9
1.4 C++工程项目文件10
1.5 使用VC创建程序11
1.6 编译与连接过程14
1.7 C++的特点17
1.8 小结17
第2章 数据类型19
视频讲解:1小时26分钟
2.1 第一个C++程序20
2.1.1 #INCLUDE指令20
2.1.2 注释20
2.1.3 main函数21
2.1.4 函数体21
2.1.5 函数返回值21
2.2 数据类型21
2.3 常量及符号22
2.3.1 整型常量23
2.3.2 实型常量24
2.3.3 字符常量24
2.3.4 字符串常量25
2.3.5 其他常量26
2.4 变量26
2.4.1 标识符26
2.4.2 变量与变量说明27
2.4.3 整型变量27
2.4.4 实型变量28
2.4.5 变量赋值28
2.4.6 变量赋初值29
2.4.7 字符变量29
2.5 数据输入与输出30
2.5.1 控制台屏幕31
2.5.2 C++语言中的流31
2.5.3 流操作的控制33
2.6 小结40
2.7 实践与练习41
第3章 表达式与语句43
视频讲解:55分钟
3.1 运算符44
3.1.1 算术运算符44
3.1.2 关系运算符45
3.1.3 逻辑运算符46
3.1.4 赋值运算符47
3.1.5 位运算48
3.1.6 移位运算符50
3.1.7 sizeof运算符52
3.1.8 条件运算符52
3.1.9 逗号运算符53
3.2 结合性和优先级53
3.3 表达式54
3.3.1 算术表达式55
3.3.2 关系表达式55
3.3.3 条件表达式55
3.3.4 赋值表达式56
3.3.5 逻辑表达式56
3.3.6 逗号表达式56
3.3.7 表达式中的类型转换58
3.4 语句60
3.5 小结61
3.6 实践与练习61
第4章 条件判断语句63
视频讲解:35分钟
4.1 决策分支64
4.2 判断语句65
4.2.1 第一种形式的判断语句65
4.2.2 第二种形式的判断语句67
4.2.3 第三种形式的判断语句69
4.3 使用条件运算符进行判断70
4.4 switch语句72
4.5 判断语句的嵌套75
4.6 小结77
4.7 实践与练习77
第5章 循环语句79
视频讲解:53分钟
5.1 while循环80
5.2 do...while循环82
5.3 while与do…while比较83
5.4 for循环语句85
5.5 循环控制88
5.5.1 控制循环的变量89
5.5.2 break语句90
5.5.3 continue语句91
5.5.4 goto语句92
5.6 循环嵌套93
5.7 循环应用实例95
5.7.1 阿姆斯壮数95
5.7.2 巴斯卡三角形96
5.7.3 对输入的分数进行排名97
5.8 小结98
5.9 实践与练习98
第6章 函数99
视频讲解:1小时14分钟
6.1 函数概述100
6.1.1 函数的定义100
6.1.2 函数的声明100
6.2 函数参数及返回值102
6.2.1 返回值102
6.2.2 空函数102
6.2.3 形参与实参103
6.2.4 默认参数104
6.2.5 可变参数105
6.3 函数调用106
6.3.1 传值调用106
6.3.2 嵌套调用108
6.3.3 递归调用109
6.4 变量作用域113
6.5 重载函数113
6.6 内联函数115
6.7 变量的存储类别116
6.7.1 auto变量116
6.7.2 static变量117
6.7.3 register变量119
6.7.4 extern变量119
6.8 小结120
6.9 实践与练习120
第7章 数组、指针和引用121
视频讲解:1小时27分钟
7.1 一维数组122
7.1.1 一维数组的声明122
7.1.2 一维数组的引用122
7.1.3 一维数组的初始化123
7.2 二维数组124
7.2.1 二维数组的声明124
7.2.2 二维数组元素的引用125
7.2.3 二维数组的初始化126
7.3 字符数组128
7.4 指针135
7.4.1 变量与指针135
7.4.2 指针运算符和取地址运算符138
7.4.3 指针运算140
7.5 指针与数组141
7.5.1 数组的存储141
7.5.2 指针与一维数组142
7.5.3 指针与二维数组144
7.5.4 指针与字符数组148
7.6 指向函数的指针149
7.7 引用150
7.7.1 使用引用传递参数152
7.7.2 指针传递参数153
7.7.3 数组做函数参数154
7.8 指针数组156
7.9 小结159
7.10 实践与练习159
第8章 构造数据类型161
视频讲解:59分钟
8.1 结构体162
8.1.1 结构体定义162
8.1.2 结构体变量163
8.1.3 结构体成员及初始化163
8.1.4 结构体的嵌套166
8.1.5 结构体大小167
8.2 结构体与函数169
8.2.1 结构体变量做函数参数169
8.2.2 结构体指针做函数参数170
8.3 结构体数组171
8.3.1 结构体数组声明与引用171
8.3.2 指针访问结构体数组172
8.4 共用体173
8.4.1 共用体的定义与声明173
8.4.2 共用体的大小174
8.4.3 共用体的特点176
8.5 枚举类型176
8.5.1 枚举类型的声明176
8.5.2 枚举类型变量177
8.5.3 枚举类型的运算178
8.6 自定义数据类型179
8.7 小结181
8.8 实践与练习181
第2篇 核心技术
第9章 面向对象编程185
视频讲解:32分钟
9.1 面向对象概述186
9.2 面向对象与面向过程编程187
9.2.1 面向过程编程187
9.2.2 面向对象编程188
9.2.3 面向对象的特点188
9.3 统一建模语言189
9.3.1 统一建模语言概述189
9.3.2 统一建模语言的结构189
9.3.3 面向对象的建模191
9.4 小结192
第10章 类和对象193
视频讲解:1小时1分钟
10.1 C++类194
10.1.1 类概述194
10.1.2 类的声明与定义194
10.1.3 类的实现196
10.1.4 对象的声明200
10.2 构造函数202
10.2.1 构造函数概述202
10.2.2 复制构造函数204
10.3 析构函数206
10.4 类成员208
10.4.1 访问类成员208
10.4.2 内联成员函数210
10.4.3 静态类成员211
10.4.4 隐藏的this指针213
10.4.5 嵌套类214
10.4.6 局部类215
10.5 友元216
10.5.1 友元概述216
10.5.2 友元类218
10.5.3 友元方法219
10.6 命名空间222
10.6.1 使用命名空间222
10.6.2 定义命名空间222
10.6.3 在多个文件中定义命名空间225
10.6.4 定义嵌套的命名空间226
10.6.5 定义未命名的命名空间228
10.7 小结228
10.8 实践与练习229
第11章 继承与派生231
视频讲解:57分钟
11.1 继承232
11.1.1 类的继承232
11.1.2 继承后可访问性234
11.1.3 构造函数访问顺序237
11.1.4 子类隐藏父类的成员函数238
11.2 重载运算符241
11.2.1 重载运算符的必要性241
11.2.2 重载运算符的形式与规则243
11.2.3 重载运算符的运算244
11.2.4 转换运算符247
11.3 多重继承248
11.3.1 多重继承定义248
11.3.2 二义性250
11.3.3 多重继承的构造顺序250
11.4 多态252
11.4.1 虚函数概述252
11.4.2 利用虚函数实现动态绑定253
11.4.3 虚继承254
11.5 抽象类256
11.5.1 纯虚函数256
11.5.2 实现抽象类中的成员函数258
11.6 小结260
11.7 实践与练习260
第3篇 高级应用
第12章 模板263
视频讲解:49分钟
12.1 函数模板264
12.1.1 函数模板的定义264
12.1.2 函数模板的作用265
12.1.3 重载函数模板267
12.2 类模板268
12.2.1 类模板的定义与声明268
12.2.2 简单类模板270
12.2.3 默认模板参数271
12.2.4 为具体类型的参数提供默认值272
12.2.5 有界数组模板273
12.3 模板的使用275
12.3.1 定制类模板275
12.3.2 定制类模板成员函数276
12.3.3 模板部分定制278
12.4 链表类模板279
12.4.1 链表280
12.4.2 链表类模板282
12.4.3 类模板的静态数据成员284
12.5 小结286
12.6 实践与练习286
第13章 STL标准模板库287
视频讲解:35分钟
13.1 序列容器288
13.1.1 向量类模板288
13.1.2 双端队列类模板290
13.1.3 链表类模板292
13.2 结合容器294
13.2.1 set类模板295
13.2.2 multiset类模板299
13.2.3 map类模板304
13.2.4 multimap类模板306
13.3 算法307
13.3.1 非修正序列算法307
13.3.2 修正序列算法310
13.3.3 排序算法314
13.3.4 数值算法321
13.4 迭代器325
13.4.1 输出迭代器325
13.4.2 输入迭代器326
13.4.3 前向迭代器327
13.4.4 双向迭代器328
13.4.5 随机访问迭代器329
13.5 小结330
13.6 实践与练习330
第14章 RTTI与异常处理331
视频讲解:22分钟
14.1 RTTI(运行时类型识别)332
14.1.1 什么是RTTI332
14.1.2 RTTI与引用333
14.1.3 RTTI与多重继承334
14.1.4 RTTI映射语法335
14.2 异常处理337
14.2.1 抛出异常338
14.2.2 异常捕获340
14.2.3 异常匹配342
14.2.4 标准异常344
14.3 小结345
第15章 程序调试347
视频讲解:33分钟
15.1 选择正确的调试方法348
15.2 程序错误常见的4种类型348
15.2.1 语法错误348
15.2.2 连接错误349
15.2.3 运行时错误349
15.2.4 逻辑错误350
15.3 调试工具的使用351
15.3.1 创建调试程序351
15.3.2 进入调试状态353
15.3.3 Watch窗口353
15.3.4 Call Stack窗口353
15.3.5 Memory窗口354
15.3.6 Variables窗口354
15.3.7 Registers窗口355
15.3.8 Disassembly窗口355
15.4 调试的基本应用355
15.4.1 变量的跟踪与查看355
15.4.2 位置断点的使用357
15.4.3 数据断点的使用359
15.5 调试的高级应用360
15.5.1 在调试时修改变量的值360
15.5.2 在循环中调试361
15.6 小结362
第16章 文件操作363
视频讲解:58分钟
16.1 文件流364
16.1.1 C++中的流类库364
16.1.2 类库的使用364
16.1.3 ios类中的枚举常量365
16.1.4 流的输入/输出365
16.2 文件打开366
16.2.1 打开方式366
16.2.2 默认打开模式367
16.2.3 打开文件同时创建文件368
16.3 文件的读写369
16.3.1 文件流369
16.3.2 写文本文件371
16.3.3 读取文本文件371
16.3.4 二进制文件的读写372
16.3.5 实现文件复制374
16.4 文件指针移动操作375
16.4.1 文件错误与状态375
16.4.2 文件的追加375
16.4.3 文件结尾的判断376
16.4.4 在指定位置读写文件378
16.5 文件和流的关联和分离379
16.6 删除文件381
16.7 小结382
16.8 实践与练习382
第17章 网络通信383
视频讲解:39分钟
17.1 TCP/IP协议384
17.1.1 OSI参考模型384
17.1.2 TCP/IP参考模型384
17.1.3 IP地址385
17.1.4 数据包格式386
17.2 套接字388
17.2.1 Winsocket套接字388
17.2.2 Winsocket的使用388
17.2.3 套接字阻塞模式393
17.2.4 字节顺序393
17.2.5 面向连接流394
17.2.6 面向无连接流395
17.3 简单协议通信395
17.3.1 服务端395
17.3.2 客户端398
17.3.3 实例的运行399
17.4 小结399
17.5 实践与练习399
第4篇 项目实战
第18章 图书管理系统403
视频讲解:42分钟
18.1 系统设计404
18.1.1 需求分析404
18.1.2 系统目标404
18.1.3 系统功能结构404
18.2 图书类405
18.3 主程序409
18.4 添加图书413
18.5 显示图书信息414
18.6 删除图书416
18.7 小结417