当前位置:当前位置:主页 > 计算机电子书 > C++ > C++编程 pdf电子书
C++20高级编程

C++20高级编程 PDF 清晰完整版

  • 更新:2022-06-27
  • 大小:40.4 MB
  • 类别:C++编程
  • 作者:罗能
  • 出版:机械工业出版社
  • 格式:PDF

  • 资源介绍
  • 学习心得
  • 相关内容

C++20高级编程》是由机械工业出版社出版的一本关于C++编程方面的书籍,作者是罗能,主要介绍了关于C++、高级编程方面的知识内容,目前在C++编程类书籍综合评分为:7.1分。

书籍介绍

编辑推荐

本书为第一本本版的C 20高级编程书籍,作者为华为海思高级工程师,其技术能力出众,在华为技术圈很有知名度,常年活跃在GitHub,其技术文章受到广大网友的关注与转载。本书是作者多年编程经验的总结,除了详解C 20的概念约束、协程、Ranges、模块等新特征外,还重点讲述库、框架开发的高级编程技术,以独特的视角和丰富的案例帮助读者掌握C 20。随书附赠全部案例源码。

内容简介

C 20高级编程主要讲解C 库、框架开发中的高级编程技术,以及*新的C 20标准特性。全书共10章,分别为:类型与对象、编译时多态、概念约束、元编程介绍、模板元编程、constexpr元编程、Ranges标准库、协程、模块、综合运用。其中C 20的四大特性独立成章,一些小的特性则贯穿于全书,其他章节则探讨了面向对象、元编程、函数式编程、并发编程等话题。

C 20高级编程针对以上新特性准备了丰富的代码样例,并随书附赠全部案例源码。相信通过这些代码,读者很容易掌握这些新特性。作为一本讲解C 高级编程的书,本书还探讨了很多元编程话题,这是作为库开发必不可少的技能,它们也将随着C 的演进而不断演进,大大提升库开发者的编程体验,尤其是近年来C 的标准提案经历了从模板元编程向constexpr元编程转换的过程。

C 20高级编程适合中高级C 程序员、架构师、框架开发者阅读,阅读前*好能够掌握一些现代C 的知识。对于想要系统性学习C 20并进阶C 技能的读者,不要错过本书。

目录

  • 前言
  • 第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概念约束历史/
  • 参考文献/

资源获取

相关资源

网友留言