图书介绍
C++17入门经典 第5版2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- 王军责任编辑;卢旭红,张骏温译;(美)艾佛·霍尔顿 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302527695
- 出版时间:2019
- 标注页数:510页
- 文件大小:185MB
- 文件页数:525页
- 主题词:C++语言-程序设计
PDF下载
下载说明
C++17入门经典 第5版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 基本概念1
1.1 现代C++1
1.2 标准库2
1.3 C++程序概念2
1.3.1 源文件和头文件3
1.3.2 注释和空白3
1.3.3 预处理指令和标准库头文件3
1.3.4 函数3
1.3.5 语句4
1.3.6 数据的输入输出4
1.3.7 return语句5
1.3.8 名称空间5
1.3.9 名称和关键字6
1.4 类和对象6
1.5 模板6
1.6 代码的表示样式和编程风格7
1.7 创建可执行文件7
1.8 过程化编程和面向对象编程8
1.9 表示数字9
1.9.1 二进制数9
1.9.2 十六进制数10
1.9.3 负的二进制数11
1.9.4 八进制数12
1.9.5 Big-Endian和Little-Endian系统12
1.9.6 浮点数13
1.10 表示字符14
1.10.1 ASCII码14
1.10.2 UCS和Unicode14
1.11 C++源字符15
1.12 本章小结17
1.13 练习17
第2章 基本数据类型19
2.1 变量、数据和数据类型19
2.1.1 定义整型变量19
2.1.2 零初始化22
2.1.3 定义有固定值的变量22
2.2 整型字面量22
2.2.1 十进制整型字面量23
2.2.2 十六进制的整型字面量23
2.2.3 八进制的整型字面量24
2.2.4 二进制的整型字面量24
2.3 整数的计算24
2.4 赋值运算26
2.5 sizeof运算符29
2.6 整数的递增和递减30
2.7 定义浮点变量31
2.8 浮点字面量32
2.9 浮点数的计算32
2.9.1 缺点32
2.9.2 无效的浮点结果33
2.9.3 数学函数33
2.10 输出流的格式化35
2.11 混合的表达式和类型转换37
2.12 显式类型转换38
2.13 确定数值的上下限40
2.14 使用字符变量41
2.15 auto关键字42
2.16 本章小结43
2.17 练习43
第3章 处理基本数据类型45
3.1 运算符的优先级和相关性45
3.2 位运算符46
3.2.1 移位运算符47
3.2.2 位模式下的逻辑运算49
3.3 枚举数据类型53
3.4 数据类型的别名55
3.5 变量的生存期56
3.6 全局变量56
3.7 本章小结59
3.8 练习59
第4章 决策61
4.1 比较数据值61
4.1.1 应用比较运算符62
4.1.2 比较浮点数值63
4.2 if语句63
4.2.1 嵌套的if语句65
4.2.2 字符分类和转换66
4.3 if-else语句68
4.3.1 嵌套的if-else语句69
4.3.2 理解嵌套的if语句70
4.4 逻辑运算符71
4.4.1 逻辑与运算符71
4.4.2 逻辑或运算符71
4.4.3 逻辑非运算符72
4.4.4 组合逻辑运算符72
4.4.5 对整数操作数应用逻辑运算符73
4.4.6 对比逻辑运算符与位运算符74
4.5 条件运算符75
4.6 switch语句76
4.7 语句块和变量作用域81
4.8 本章小结82
4.9 练习83
第5章 数组和循环85
5.1 数组85
5.2 理解循环87
5.3 for循环87
5.4 避免幻数89
5.5 用初始化列表定义数组的大小90
5.6 确定数组的大小90
5.7 用浮点数控制for循环91
5.8 使用更复杂的for循环控制表达式93
5.9 基于范围的for循环94
5.10 while循环95
5.11 do-while循环96
5.12 嵌套的循环98
5.13 跳过循环迭代100
5.14 循环的中断101
5.15 使用无符号整数控制for循环103
5.16 字符数组104
5.17 多维数组107
5.17.1 初始化多维数组108
5.17.2 多维字符数组110
5.18 在运行期间给数组分配内存空间111
5.19 数组的替代品112
5.19.1 使用array<T,N>容器113
5.19.2 使用std::vector<T>容器116
5.20 本章小结119
5.21 练习120
第6章 指针和引用121
6.1 什么是指针121
6.2 地址运算符123
6.3 间接运算符124
6.4 为什么使用指针125
6.5 char类型的指针125
6.6 常量指针和指向常量的指针128
6.7 指针和数组130
6.7.1 指针的算术运算130
6.7.2 使用数组名的指针表示法132
6.8 动态内存分配133
6.8.1 栈和自由存储区134
6.8.2 运算符new和delete134
6.8.3 数组的动态内存分配135
6.9 通过指针选择成员138
6.10 动态内存分配的危险138
6.10.1 悬挂指针和多次释放138
6.10.2 分配与释放的不匹配139
6.10.3 内存泄漏139
6.10.4 自由存储区的碎片139
6.11 内存分配的黄金准则140
6.12 原始指针和智能指针140
6.12.1 使用unique_ptr<T>指针141
6.12.2 使用shared_ptr<T>指针143
6.13 理解引用146
6.13.1 定义引用146
6.13.2 在基于范围的for循环中使用引用变量147
6.14 本章小结148
6.15 练习148
第7章 操作字符串151
7.1 更强大的string类151
7.1.1 定义string对象151
7.1.2 string对象的操作154
7.1.3 访问字符串中的字符157
7.1.4 访问子字符串158
7.1.5 比较字符串158
7.1.6 搜索字符串162
7.1.7 修改字符串167
7.1.8 对比std::string与std::vector<char>170
7.2 将字符串转换为数字171
7.3 字符串流171
7.4 国际字符串172
7.4.1 存储wchar_t字符的字符串172
7.4.2 包含Unicode字符串的对象173
7.5 原始字符串字面量173
7.6 本章小结174
7.7 练习175
第8章 定义函数177
8.1 程序的分解177
8.1.1 类中的函数177
8.1.2 函数的特征178
8.2 定义函数178
8.2.1 函数体179
8.2.2 返回值180
8.2.3 函数声明181
8.3 给函数传送实参182
8.3.1 按值传送182
8.3.2 按引用传送187
8.3.3 字符串视图:新的const string引用192
8.4 默认实参值194
8.5 main()函数的实参196
8.6 从函数中返回值196
8.6.1 返回指针197
8.6.2 返回引用199
8.6.3 对比返回值与输出参数200
8.6.4 返回类型推断200
8.6.5 使用可选值201
8.7 静态变量203
8.8 内联函数204
8.9 函数重载204
8.9.1 重载和指针参数206
8.9.2 重载和引用参数206
8.9.3 重载和const参数207
8.9.4 重载和默认实参值208
8.10 递归209
8.10.1 基本示例209
8.10.2 递归算法210
8.11 本章小结215
8.12 练习216
第9章 函数模板219
9.1 函数模板219
9.2 创建函数模板的实例220
9.3 模板类型参数221
9.4 显式指定模板实参221
9.5 函数模板的特例222
9.6 函数模板和重载222
9.7 带有多个参数的函数模板224
9.8 模板的返回类型推断225
9.8.1 decltype和拖尾返回类型225
9.8.2 对比decltype(auto)、拖尾decltype()与auto226
9.9 模板参数的默认值226
9.10 非类型的模板参数227
9.11 本章小结229
9.12 练习229
第10章 程序文件和预处理指令231
10.1 理解转换单元231
10.1.1 单一定义规则231
10.1.2 程序文件和链接232
10.1.3 确定名称的链接属性232
10.1.4 外部函数233
10.1.5 外部变量233
10.1.6 内部名称235
10.2 预处理源代码236
10.3 定义预处理宏236
10.3.1 定义类似于函数的宏238
10.3.2 取消宏的定义239
10.4 包含头文件240
10.4.1 防止重复头文件的内容240
10.4.2 第一个头文件241
10.5 名称空间242
10.5.1 全局名称空间242
10.5.2 定义名称空间242
10.5.3 应用using声明244
10.5.4 函数和名称空间244
10.5.5 未命名的名称空间246
10.5.6 嵌套的名称空间247
10.5.7 名称空间的别名248
10.6 逻辑预处理指令248
10.6.1 逻辑#if指令248
10.6.2 测试指定标识符的值249
10.6.3 多个代码选择249
10.6.4 标准的预处理宏250
10.6.5 检查头文件是否可用251
10.7 调试方法251
10.7.1 集成调试器252
10.7.2 调试中的预处理指令252
10.7.3 使用assert()宏254
10.8 静态断言255
10.9 本章小结257
10.10 练习257
第11章 定义自己的数据类型259
11.1 类和面向对象编程259
11.1.1 封装260
11.1.2 继承262
11.1.3 多态性263
11.2 术语263
11.3 定义类264
11.4 构造函数265
11.4.1 默认构造函数265
11.4.2 定义类的构造函数266
11.4.3 使用default关键字267
11.4.4 在类的外部定义函数和构造函数267
11.4.5 默认构造函数的参数值268
11.4.6 使用成员初始化列表269
11.4.7 使用explicit关键字269
11.4.8 委托构造函数271
11.4.9 副本构造函数272
11.5 访问私有类成员273
11.6 this指针274
11.7 const对象和const成员函数275
11.7.1 const成员函数276
11.7.2 const正确性277
11.7.3 重载const277
11.7.4 常量的强制转换279
11.7.5 使用mutable关键字279
11.8 友元280
11.8.1 类的友元函数280
11.8.2 友元类281
11.9 类的对象数组282
11.10 类对象的大小283
11.11 类的静态成员283
11.11.1 静态成员变量283
11.11.2 访问静态成员变量286
11.11.3 静态常量286
11.11.4 类类型的静态成员变量287
11.11.5 静态成员函数288
11.12 析构函数288
11.13 使用指针作为类成员290
11.14 嵌套类299
11.15 本章小结302
11.16 练习303
第12章 运算符重载305
12.1 为类实现运算符305
12.1.1 运算符重载305
12.1.2 实现重载运算符306
12.1.3 非成员运算符函数307
12.1.4 提供对运算符的全部支持308
12.1.5 在类中实现所有的比较运算符309
12.2 可以重载的运算符311
12.3 运算符函数习语313
12.4 为输出流重载<<运算符313
12.5 重载算术运算符315
12.6 成员与非成员函数318
12.7 重载一元运算符320
12.8 重载递增和递减运算符321
12.9 重载下标运算符322
12.10 函数对象326
12.11 重载类型转换326
12.12 重载赋值运算符327
12.12.1 实现复制赋值运算符328
12.12.2 复制赋值运算符与副本构造函数330
12.12.3 赋值不同类型330
12.13 本章小结331
12.14 练习331
第13章 继承333
13.1 类和面向对象编程333
13.2 类的继承334
13.2.1 继承和聚合335
13.2.2 派生类335
13.3 把类的成员声明为protected337
13.4 派生类成员的访问级别338
13.4.1 在类层次结构中使用访问修饰符338
13.4.2 在类层次结构中选择访问修饰符339
13.4.3 改变继承成员的访问修饰符340
13.5 派生类中的构造函数341
13.5.1 派生类中的副本构造函数343
13.5.2 派生类中的默认构造函数344
13.5.3 继承构造函数344
13.6 继承中的析构函数345
13.7 重复的成员变量名347
13.8 重复的成员函数名347
13.9 多重继承348
13.9.1 多个基类348
13.9.2 继承成员的模糊性349
13.9.3 重复继承352
13.9.4 虚基类353
13.10 在相关的类类型之间转换353
13.11 本章小结354
13.12 练习354
第14章 多态性355
14.1 理解多态性355
14.1.1 使用基类指针355
14.1.2 调用继承的函数357
14.1.3 虚函数359
14.1.4 虚函数中的默认实参值365
14.1.5 通过引用调用虚函数366
14.1.6 多态集合366
14.1.7 通过指针释放对象367
14.1.8 在指针和类对象之间转换369
14.1.9 动态强制转换370
14.1.10 调用虚函数的基类版本373
14.1.11 在构造函数或析构函数中调用虚函数374
14.2 多态性引发的成本375
14.3 确定动态类型376
14.4 纯虚函数378
14.4.1 抽象类379
14.4.2 用作接口的抽象类381
14.5 本章小结382
14.6 练习383
第15章 运行时错误和异常385
15.1 处理错误385
15.2 理解异常386
15.2.1 抛出异常386
15.2.2 异常处理过程388
15.2.3 导致抛出异常的代码389
15.2.4 嵌套的try块389
15.3 用类对象作为异常392
15.3.1 匹配catch处理程序和异常393
15.3.2 用基类处理程序捕获派生类异常394
15.4 重新抛出异常396
15.5 未处理的异常398
15.6 捕获所有的异常399
15.7 不抛出异常的函数400
15.7.1 noexcept限定符400
15.7.2 异常和析构函数401
15.8 异常和资源泄漏401
15.8.1 资源获取即初始化403
15.8.2 用于动态内存的标准RAII类404
15.9 标准库异常405
15.9.1 异常类的定义406
15.9.2 使用标准异常407
15.10 本章小结409
15.11 练习410
第16章 类模板413
16.1 理解类模板413
16.2 定义类模板414
16.2.1 模板参数414
16.2.2 简单的类模板415
16.3 定义类模板的成员函数416
16.3.1 构造函数模板416
16.3.2 析构函数模板417
16.3.3 下标运算符模板417
16.3.4 赋值运算符模板419
16.4 创建类模板的实例422
16.5 非类型的类模板参数426
16.5.1 带有非类型参数的成员函数的模板427
16.5.2 非类型参数的实参431
16.5.3 对比非类型模板实参与构造函数实参431
16.6 模板参数的默认值432
16.7 模板的显式实例化432
16.8 类模板特化433
16.8.1 定义类模板特化433
16.8.2 部分模板特化433
16.8.3 从多个部分特化中选择434
16.9 在类模板中使用static_assert()434
16.10 类模板的友元435
16.11 带有嵌套类的类模板436
16.11.1 栈成员的函数模板438
16.11.2 消除依赖名称的歧义441
16.12 本章小结443
16.13 练习443
第17章 移动语义445
17.1 lvalue和rvalue445
17.2 移动对象447
17.2.1 传统方法449
17.2.2 定义移动成员449
17.3 显式移动对象452
17.3.1 只能移动的类型452
17.3.2 移动对象的继续使用453
17.4 看似矛盾的情况454
17.4.1 std::move()并不移动任何东西454
17.4.2 rvalue引用是一个lvalue454
17.5 继续探讨函数定义455
17.5.1 按rvalue引用传送455
17.5.2 按值传送的归来456
17.5.3 按值返回458
17.6 继续讨论定义移动成员459
17.6.1 总是添加noexcept459
17.6.2 “移动后交换”技术462
17.7 特殊成员函数463
17.7.1 默认移动成员464
17.7.2 5的规则464
17.7.3 0的规则465
17.8 本章小结466
17.9 练习466
第18章 头等函数467
18.1 函数指针467
18.1.1 定义函数指针467
18.1.2 高阶函数的回调函数469
18.1.3 函数指针的类型别名471
18.2 函数对象472
18.2.1 基本的函数对象472
18.2.2 标准函数对象473
18.2.3 参数化函数对象474
18.3 lambda表达式475
18.3.1 定义lambda表达式475
18.3.2 命名lambda闭包476
18.3.3 向函数模板传送lambda表达式476
18.3.4 捕获子句477
18.4 std::function<>模板481
18.5 本章小结482
18.6 练习483
第19章 容器与算法485
19.1 容器485
19.1.1 顺序容器485
19.1.2 栈和队列488
19.1.3 集合489
19.1.4 映射491
19.2 迭代器494
19.2.1 迭代器设计模式495
19.2.2 标准库容器的迭代器496
19.2.3 数组的迭代器502
19.3 算法503
19.3.1 第一个示例503
19.3.2 寻找元素504
19.3.3 输出多个值505
19.3.4 删除-擦除技术507
19.3.5 排序507
19.3.6 并行算法508
19.4 本章小结508
19.5 练习509
热门推荐
- 310466.html
- 341450.html
- 2037291.html
- 2302060.html
- 1890773.html
- 2605324.html
- 3366593.html
- 627940.html
- 530188.html
- 633010.html
- http://www.ickdjs.cc/book_3314954.html
- http://www.ickdjs.cc/book_2684415.html
- http://www.ickdjs.cc/book_2938253.html
- http://www.ickdjs.cc/book_3158735.html
- http://www.ickdjs.cc/book_795992.html
- http://www.ickdjs.cc/book_2404343.html
- http://www.ickdjs.cc/book_2975191.html
- http://www.ickdjs.cc/book_414129.html
- http://www.ickdjs.cc/book_3380899.html
- http://www.ickdjs.cc/book_375002.html