书籍详情

C++20高级编程

C++20高级编程

作者:罗能 著

出版社:机械工业出版社

出版时间:2022-07-01

ISBN:9787111708223

定价:¥109.00

购买这本书可以去
内容简介
  C++20高级编程主要讲解C++库、框架开发中的高级编程技术,以及*新的C++20标准特性。全书共10章,分别为:类型与对象、编译时多态、概念约束、元编程介绍、模板元编程、constexpr元编程、Ranges标准库、协程、模块、综合运用。其中C++20的四大特性独立成章,一些小的特性则贯穿于全书,其他章节则探讨了面向对象、元编程、函数式编程、并发编程等话题。 C++20高级编程针对以上新特性准备了丰富的代码样例,并随书附赠全部案例源码。相信通过这些代码,读者很容易掌握这些新特性。作为一本讲解C++高级编程的书,本书还探讨了很多元编程话题,这是作为库开发必不可少的技能,它们也将随着C++的演进而不断演进,大大提升库开发者的编程体验,尤其是近年来C++的标准提案经历了从模板元编程向constexpr元编程转换的过程。 C++20高级编程适合中高级C++程序员、架构师、框架开发者阅读,阅读前*好能够掌握一些现代C++的知识。对于想要系统性学习C++20并进阶C++技能的读者,一定不要错过本书。
作者简介
  罗能,华为海思高级工程师,2015年获得安徽省ACM编程竞赛全省夺冠,2018年获得华为无线编程竞赛冠军。知乎《魅力C++》专栏作者,累计收获6000+赞,7000+收藏,阅读量超100万。 熟悉面向对象编程、函数式编程,经常活跃于开源社区,为开源社区贡献过多项代码,GitHub累计收获1300+星。
目录
◆ 目录:◆



前言
第1章 类型与对象/
1.1类型的作用/
1.2现代C++中对类型处理能力的演进/
1.3值类别(value category)/
1.3.1理解左值与右值/
1.3.2函数形参何时使用何种引用/
1.3.3转发引用与完美转发/
1.4类型推导/
1.4.1auto类型推导/
1.4.2decltype类型推导/
1.4.3decltype(auto)类型推导/
1.4.4std::declval元函数/
1.4.5类模板参数推导(CTAD)/
1.5函数对象/
1.5.1定义函数对象/
1.5.2lambda表达式/
1.5.3函数适配器/
1.6运行时多态/
1.6.1运行时多态手段/
1.6.2subtype多态vsadhoc多态/
1.7调试手段/
1.7.1编译时打印方案/
1.7.2运行时打印方案/
1.7.3使用外部工具/

第2章 编译时多态/
2.1函数重载机制/
2.1.1名称查找/
2.1.2模板函数处理/
2.1.3重载决议/
2.1.4注意事项/
2.1.5再谈SFINAE/
2.2类型特征(Type traits)/
2.2.1Type traits谓词与变量模板/
2.2.2类型变换/
2.2.3辅助类/
2.2.4空基类优化/
2.2.5实现Type traits/
2.2.6类型内省/
2.2.7enable_if元函数/
2.2.8标签分发/
2.2.9if constexpr/
2.2.10void_t元函数/
2.3奇异递归模板/
2.3.1代码复用/
2.3.2静态多态/
2.3.3enable_shared_from_this模板类/
2.4表达式模板/
2.4.1标量延迟计算/
2.4.2向量延迟计算/
2.4.3提高表达力/
2.5注意事项/

第3章 概念约束/
3.1定义概念/
3.2requires表达式/
3.2.1简单要求/
3.2.2类型要求/
3.2.3复合要求/
3.2.4嵌套要求/
3.2.5注意事项/
3.3requires子句/
3.4约束的偏序规则/
3.4.1约束表达式归一化/
3.4.2简单约束的包含关系/
3.4.3一般约束的包含关系/
3.4.4using类型别名与concept表达式别名/
3.5概念标准库/
3.5.1same_as(与某类相同)/
3.5.2derived_from(派生自某类)/
3.5.3convertible_to(可转换为某类)/
3.5.4算术概念/
3.5.5值概念/
3.5.6invocable(可调用的)/
3.6综合运用之扩展transform变换算法/
3.7注意事项/

第4章 元编程介绍/
4.1元编程历史/
4.2模板历史/
4.3constexpr历史/
4.4元编程能力与应用/
4.4.1零成本抽象/
4.4.2值计算/
4.4.3类型计算/
4.4.4编译时多态/
4.4.5类型安全/
4.4.6泛型编程/
4.4.7静态反射/
4.4.8内部领域特定语言EDSL/

第5章 模板元编程/
5.1模板vs宏/
5.1.1泛型函数/
5.1.2泛型容器/
5.2模板类元函数/
5.2.1数值计算/
5.2.2类型计算/
5.3TypeList/
5.3.1基本方法/
5.3.2高阶函数/
5.3.3常用算法/
5.4综合运用/
5.4.1全局最短路径/
5.4.2KV数据表/
5.4.3注意事项/

第6章 constexpr元编程/
6.1constexpr变量/
6.2constinit初始化/
6.3折叠表达式/
6.4constexpr函数/
6.4.1consteval/
6.4.2编译时内存分配/
6.4.3编译时虚函数/
6.4.4is_constant_evaluated/
6.4.5停机问题/
6.4.6检测未定义行为/
6.5非类型模板参数/
6.6constexpr与TypeList/
6.6.1类型、值的包裹类/
6.6.2高阶函数/
6.6.3管道操作符/
6.6.4重构KV数据表/
6.7综合运用之编译时字符串操作/

第7章 Ranges标准库/
7.1range访问操作/
7.1.1ranges::begin/
7.1.2ranges::end/
7.1.3ranges::size/
7.1.4ranges::empty/
7.1.5ranges::data/
7.2range相关概念/
7.2.1range/
7.2.2borrowed_range/
7.2.3sized_range/
7.2.4view/
7.2.5其他概念/
7.3range实用组件/
7.3.1view_interface/
7.3.2subrange/
7.3.3ref_view/
7.4range工厂/
7.4.1empty_view/
7.4.2single_view/
7.4.3iota_view/
7.4.4istream_view/
7.5range适配器/
7.5.1适配器对象/
7.5.2all/
7.5.3filter/
7.5.4transform/
7.5.5take/
7.5.6take_while/
7.5.7drop/
7.5.8drop_while/
7.5.9join/
7.5.10split/
7.5.11common/
7.5.12reverse/
7.5.13elements/
7.6其他改善/
7.6.1迭代器概念/
7.6.2算法接口改善/
7.7综合运用/
7.7.1矩阵乘法/
7.7.2日历程序/
7.7.3注意事项/

第8章 协程/
8.1协程的起源/
8.2协程初探/
8.3函数与协程理论/
8.4揭秘co_await表达式/
8.4.1表达式转换过程/
8.4.2Awaiter对象/
8.4.3标准库中的Awaiter/
8.5揭秘Promise概念/
8.5.1协程句柄/
8.5.2Promise概念/
8.6综合运用/
8.6.1生成器/
8.6.2为已有类型非侵入式扩展协程接口/
8.6.3利用协程机制简化错误处理/
8.6.4注意事项/

第9章 模块/
9.1Hello World模块/
9.2定义一个模块/
9.3模块分区/
9.4私有片段/
9.5模块样板文件/
9.6注意事项/

第10章 综合运用/
10.1配置文件反序列化框架/
10.1.1背景介绍/
10.1.2标准的缺失,静态反射机制/
10.1.3元数据设计/
10.1.4REPEAT宏/
10.1.5结构体遍历/
10.1.6编译时多态/
10.1.7反序列化数据类型/
10.2AsyncIO协程库/
10.2.1背景介绍/
10.2.2性能测试/
10.2.3事件驱动模型/
10.2.4Handle类设计/
10.2.5调度器设计/
10.2.6Task协程设计/
10.2.7实现一些协程/
10.2.8注意事项/

附录/
附录A概念约束历史/
参考文献/
猜您喜欢

读书导航