计算机
类型
7.2
豆瓣评分
可以朗读
语音朗读
182千字
字数
2022-05-01
发行日期
展开全部
主编推荐语
C++高级编程技术与C++20标准特性全解析,适合中高级程序员、架构师和框架开发者阅读。
内容简介
本书主要讲解C++库、框架开发中的高级编程技术,以及最新的C++20标准特性。全书共10章,分别为:类型与对象、编译时多态、概念约束、元编程介绍、模板元编程、constexpr 元编程、Ranges 标准库、协程、模块、综合运用。其中 C++20 的四大特性独立成章,一些小的特性则贯穿于全书,其他章节则探讨了面向对象、元编程、函数式编程、并发编程等话题。本书针对以上新特性准备了丰富的代码样例,相信通过这些代码读者很容易掌握这些新特性。作为一本讲解 C++ 高级编程的书,本书还探讨了很多元编程话题,这是作为库开发必不可少的技能,它们也将随着 C++ 的演进而不断演进,大大提升库开发者的编程体验,尤其是近年来 C++ 的标准提案经历了从模板元编程向 constexpr 元编程转换的过程。本书适合中高级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.1 auto类型推导
- 1.4.2 decltype类型推导
- 1.4.3 decltype(auto)类型推导
- 1.4.4 std::declval元函数
- 1.4.5 类模板参数推导(CTAD)
- 1.5 函数对象
- 1.5.1 定义函数对象
- 1.5.2 lambda表达式
- 1.5.3 函数适配器
- 1.6 运行时多态
- 1.6.1 运行时多态手段
- 1.6.2 subtype多态vs ad-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.1 Type 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.9 if constexpr
- 2.2.10 void_t元函数
- 2.3 奇异递归模板
- 2.3.1 代码复用
- 2.3.2 静态多态
- 2.3.3 enable_shared_from_this模板类
- 2.4 表达式模板
- 2.4.1 标量延迟计算
- 2.4.2 向量延迟计算
- 2.4.3 提高表达力
- 2.5 注意事项
- 第3章 概念约束
- 3.1 定义概念
- 3.2 requires表达式
- 3.2.1 简单要求
- 3.2.2 类型要求
- 3.2.3 复合要求
- 3.2.4 嵌套要求
- 3.2.5 注意事项
- 3.3 requires子句
- 3.4 约束的偏序规则
- 3.4.1 约束表达式归一化
- 3.4.2 简单约束的包含关系
- 3.4.3 一般约束的包含关系
- 3.4.4 using类型别名与concept表达式别名
- 3.5 概念标准库<concepts>
- 3.5.1 same_as(与某类相同)
- 3.5.2 derived_from(派生自某类)
- 3.5.3 convertible_to(可转换为某类)
- 3.5.4 算术概念
- 3.5.5 值概念
- 3.5.6 invocable(可调用的)
- 3.6 综合运用之扩展transform变换算法
- 3.7 注意事项
- 第4章 元编程介绍
- 4.1 元编程历史
- 4.2 模板历史
- 4.3 constexpr历史
- 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.3 TypeList
- 5.3.1 基本方法
- 5.3.2 高阶函数
- 5.3.3 常用算法
- 5.4 综合运用
- 5.4.1 全局最短路径
- 5.4.2 KV数据表
- 5.4.3 注意事项
- 第6章 constexpr元编程
- 6.1 constexpr变量
- 6.2constinit初始化
- 6.3 折叠表达式
- 6.4 constexpr函数
- 6.4.1 consteval
- 6.4.2 编译时内存分配
- 6.4.3 编译时虚函数
- 6.4.4 is_constant_evaluated
- 6.4.5 停机问题
- 6.4.6 检测未定义行为
- 6.5 非类型模板参数
- 6.6 constexpr与TypeList
- 6.6.1 类型、值的包裹类
- 6.6.2 高阶函数
- 6.6.3 管道操作符
- 6.6.4 重构KV数据表
- 6.7 综合运用之编译时字符串操作
- 第7章 Ranges标准库
- 7.1 range访问操作
- 7.1.1 ranges::begin
- 7.1.2 ranges::end
- 7.1.3 ranges::size
- 7.1.4 ranges::empty
- 7.1.5 ranges::data
- 7.2 range相关概念
- 7.2.1 range
- 7.2.2 borrowed_range
- 7.2.3 sized_range
- 7.2.4 view
- 7.2.5 其他概念
- 7.3 range实用组件
- 7.3.1 view_interface
- 7.3.2 subrange
- 7.3.3 ref_view
- 7.4 range工厂
- 7.4.1 empty_view
- 7.4.2 single_view
- 7.4.3 iota_view
- 7.4.4 istream_view
- 7.5 range适配器
- 7.5.1 适配器对象
- 7.5.2 all
- 7.5.3 filter
- 7.5.4 transform
- 7.5.5 take
- 7.5.6 take_while
- 7.5.7 drop
- 7.5.8 drop_while
- 7.5.9 join
- 7.5.10 split
- 7.5.11 common
- 7.5.12 reverse
- 7.5.13 elements
- 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.2 Awaiter对象
- 8.4.3 标准库中的Awaiter
- 8.5 揭秘Promise概念
- 8.5.1 协程句柄
- 8.5.2 Promise概念
- 8.6 综合运用
- 8.6.1 生成器
- 8.6.2 为已有类型非侵入式扩展协程接口
- 8.6.3 利用协程机制简化错误处理
- 8.6.4 注意事项
- 第9章 模块
- 9.1 Hello 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.4 REPEAT宏
- 10.1.5 结构体遍历
- 10.1.6 编译时多态
- 10.1.7 反序列化数据类型
- 10.2 AsyncIO协程库
- 10.2.1 背景介绍
- 10.2.2 性能测试
- 10.2.3 事件驱动模型
- 10.2.4 Handle类设计
- 10.2.5 调度器设计
- 10.2.6 Task协程设计
- 10.2.7 实现一些协程
- 10.2.8 注意事项
- 附录
- 附录A 概念约束历史
- 参考文献
- 后折页
- 封底
展开全部
出版方
机械工业出版社
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。