目    录

第1章  绪论	1
1.1  计算机程序设计语言	1
1.1.1  程序设计语言	1
1.1.2  程序设计范型	2
1.1.3  面向对象程序设计	4
1.2  C++程序设计语言概述	5
1.2.1  C++语言发展简史	5
1.2.2  C++语言的特点	6
1.3  Visual C++ 2017编程工具简介	7
1.3.1  C++程序生成过程	7
1.3.2  .NET 框架与
Visual C++ 2017	8
1.3.3  Visual C++ 2017集成开发
环境简介	9
1.3.4  创建控制台应用程序项目	10
1.3.5  创建Windows窗体应用
程序项目	12
1.3.6  调试与跟踪程序	13
1.4  本章小结	14
1.5  习题	15
第2章  数据类型与基本运算	16
2.1  数据类型	16
2.1.1  基本数据类型	17
2.1.2  构造数据类型	19
2.2  变量与常量	20
2.2.1  词法及其规则	20
2.2.2  变量	21
2.2.3  常量	23
2.2.4  auto类型说明符	26
2.2.5  decltype类型指示符	27
2.3  运算与表达式	27
2.3.1  运算类型和表达式	28
2.3.2  算术运算及算术表达式	29
2.3.3  赋值运算及赋值表达式	30
2.3.4  关系运算及关系表达式	32
2.3.5  逻辑运算及逻辑表达式	32
2.3.6  位运算及位表达式	33
2.3.7  其他运算及其表达式	35
2.4  数组	37
2.4.1  一维数组	37
2.4.2  多维数组	39
2.4.3  字符数组	41
2.5  指针与引用	43
2.5.1  指针	43
2.5.2  多级指针	45
2.5.3  指针运算	46
2.5.4  指针与数组	48
2.5.5  引用	51
2.6  枚举	54
2.6.1  无作用域限定枚举	54
2.6.2  强类型枚举	55
2.7  标准库类型string	56
2.8  标准库类型vector	57
2.9  标准库类型map	58
2.10  结构体与联合	59
2.10.1  结构体	60
2.10.2  联合	61
2.11  案例实训	63
2.12  本章小结	64
2.13  习题	65
第3章  基本控制结构与语句	67
3.1  算法与基本控制结构	67
3.1.1  算法与流程图	67
3.1.2  三种基本控制结构	69
3.1.3  语句	69
3.2  选择型结构	70
3.2.1  if…else语句	70
3.2.2  switch语句	72
3.3  循环型结构	74
3.3.1  传统for语句	74
3.3.2  范围for语句	76
3.3.3  while语句	77
3.3.4  do…while语句	79
3.3.5  跳转语句	81
3.4  异常处理	85
3.4.1  throw语句	85
3.4.2  try语句	86
3.5  输入与输出	88
3.5.1  控制台输入输出	88
3.5.2  文件输入输出	89
3.6  案例实训	92
3.7  本章小结	93
3.8  习题	94
第4章  函数	97
4.1  函数定义与调用	97
4.2  函数参数传递	100
4.2.1  按值传递	100
4.2.2  地址传递	101
4.2.3  引用传递	102
4.2.4  const形参	103
4.2.5  数组形参	105
4.3  函数返回类型与函数重载	106
4.3.1  返回类型与return语句	106
4.3.2  尾随返回类型	109
4.3.3  返回数组指针	110
4.3.4  函数重载	111
4.4  内联函数与常量表达式函数	113
4.4.1  inline函数	113
4.4.2  constexpr函数	114
4.5  递归函数	115
4.6  函数指针	118
4.7  Lambda函数	124
4.8  内存模型、作用域和生存期	125
4.8.1  C++程序内存模型	126
4.8.2  全局变量和局部变量	126
4.8.3  作用域和可见性	127
4.8.4  存储类型和生存期	128
4.9  案例实训	130
4.10  本章小结	131
4.11  习题	131
第5章  类与对象	136
5.1  面向对象编程:封装	136
5.2  类与对象	137
5.2.1  类的定义	137
5.2.2  对象的创建	139
5.2.3  this指针与对象	141
5.3  构造函数与析构函数	143
5.3.1  构造函数	143
5.3.2  委托构造函数	146
5.3.3  析构函数	147
5.4  类中成员对象	149
5.4.1  成员对象的构造与析构	149
5.4.2  组合应用示例	152
5.5  类中静态成员	155
5.5.1  静态数据成员	155
5.5.2  静态成员函数	158
5.6  类的友元	160
5.6.1  友元函数	160
5.6.2  友元类	162
5.7  运算符重载函数	164
5.7.1  运算符重载成员函数	165
5.7.2  运算符重载友元函数	168
5.7.3  特殊运算符的重载	171
5.7.4  流插入与提取运算符重载	178
5.8  多文件结构与编译预处理	180
5.8.1  多文件结构	180
5.8.2  编译预处理	181
5.9  案例实训	185
5.10  本章小结	187
5.11  习题	188
第6章  动态内存	192
6.1  动态内存的分配与释放	192
6.1.1  new和delete运算符	192
6.1.2  深复制与浅复制	196
6.2  智能指针	198
6.2.1  unique_ptr	199
6.2.2  shared_ptr和weak_ptr	200
6.3  移动构造与移动赋值	202
6.3.1  移动语义	202
6.3.2  std::move函数	204
6.3.3  移动构造函数	204
6.3.4  移动赋值运算符	206
6.4  合成的成员函数	207
6.4.1  用=default显式合成	208
6.4.2  用=delete阻止拷贝	208
6.5  动态内存应用示例	209
6.5.1  Array类的设计	209
6.5.2  String类的设计	212
6.6  案例实训	216
6.7  本章小结	217
6.8  习题	217
第7章  类的继承	219
7.1  面向对象编程:继承	219
7.2  派生类	220
7.2.1  派生类的定义	221
7.2.2  继承方式与访问控制	223
7.2.3  成员函数的同名覆盖与
隐藏	225
7.2.4  派生类与基类的赋值兼容	227
7.3  派生类的构造与析构	230
7.4  多重继承与虚基类	234
7.4.1  多重继承	234
7.4.2  虚基类	236
7.5  案例实训	240
7.6  本章小结	241
7.7  习题	242
第8章  多态性	245
8.1  面向对象编程:多态	245
8.2  虚函数与动态绑定	246
8.2.1  虚函数的定义与用法	246
8.2.2  override和final修饰符	249
8.2.3  动态绑定的实现方法	250
8.2.4  虚析构函数	252
8.3  纯虚函数与抽象类	254
8.4  案例实训	261
8.5  本章小结	262
8.6  习题	262
第9章  模板与泛型编程	266
9.1  函数模板	266
9.1.1  函数模板的定义与实例化	266
9.1.2  函数模板与重载	269
9.1.3  完美转发	270
9.2  类模板	272
9.2.1  类模板的定义与实例化	272
9.2.2  类模板与继承	277
9.2.3  类模板与友元	279
9.2.4  别名模板	280
9.2.5  变量模板	281
9.2.6  嵌套类模板	282
9.2.7  模板特例化	283
9.3  可变参数模板	284
9.3.1  可变参数函数模板	284
9.3.2  可变参数类模板	286
9.4  案例实训	287
9.5  本章小结	288
9.6  习题	288
第10章  标准模板库	291
10.1  STL组件概述	291
10.2  容器	293
10.2.1  顺序容器	293
10.2.2  关联容器	295
10.2.3  无序容器	297
10.3  迭代器	298
10.3.1  迭代器分类	299
10.3.2  迭代器适配器	302
10.4  算法与函数对象	304
10.4.1  泛型算法	304
10.4.2  函数对象	309
10.5  案例实训	312
10.6  本章小结	313
10.7  习题	314
第11章  输入输出流与文件	315
11.1  流概述	315
11.2  流的格式控制	317
11.2.1  流格式状态字	317
11.2.2  流格式操纵符	320
11.2.3  流格式控制成员函数	322
11.3  输入流与输出流	323
11.3.1  输入流	323
11.3.2  输出流	325
11.3.3  流与对象的输入输出	326
11.4  流的错误状态	328
11.5  文件的输入与输出	329
11.5.1  文件的基本操作	330
11.5.2  文本文件的输入与输出	333
11.5.3  二进制文件的输入与输出	335
11.6  字符串流	339
11.7  案例实训	340
11.8  本章小结	341
11.9  习题	341
第12章  异常与命名空间	344
12.1  异常处理	344
12.1.1  异常概述	344
12.1.2  抛出异常与堆栈展开	345
12.1.3  构造函数、析构函数和
异常	347
12.1.4  noexcept说明符	351
12.1.5  标准库中异常类	352
12.2  命名空间	357
12.2.1  命名空间的定义	357
12.2.2  命名空间与作用域	359
12.3  案例实训	360
12.4  本章小结	360
12.5  习题	361
第13章  C++/CLI程序设计基础	364
13.1  概述	364
13.2  C++/CLI的基本数据类型	366
13.3  C++/CLI的句柄、装箱与拆箱	368
13.4  C++/CLI的字符串与数组	371
13.4.1  C++/CLI中的String类	371
13.4.2  C++/CLI中的数组	373
13.5  C++/CLI中的类与属性	376
13.6  C++/CLI中的多态与接口	378
13.7  C++/CLI中的模板与泛型	382
13.8  C++/CLI中的异常	384
13.9  C++/CLI中的枚举	386
13.10  .NET中的委托与事件	387
13.10.1  委托	387
13.10.2  事件	390
13.11  案例实训	392
13.12  本章小结	392
13.13  习题	393
第14章  WinForm应用程序设计	395
14.1  鼠标坐标的显示	395
14.2  倒计时器	396
14.3  简易计算器	399
14.4  循环队列原理演示	405
14.5  随机运动的小球	410
14.6  案例实训	413
14.7  本章小结	414
14.8  习题	415
第15章  项目实践	416
15.1  系统概述	416
15.2  功能设计	416
15.3  系统设计	417
15.3.1  数据表设计	417
15.3.2  界面设计	417
15.4  模块设计与代码实现	418
15.4.1  实体类的实现代码	418
15.4.2  数据类的实现代码	418
15.4.3  菜单类的实现代码	418
15.4.4  应用程序类的实现代码	419
15.5  本章小结	419
15.6  习题	419
附录A  ASCII码字符表	420
附录B  IEEE浮点数表示	422