特别优惠
跟上新发行和促销的步伐。注册,听取我们的意见。
专业程序员的Deitel®c++ 20指南
为具有另一种高级语言背景的程序员编写,在本书中,您将学习使用c++ 20及其“四大”功能-范围,概念,模块和协程的现代c++开发手。(详细信息请参见前言和封面内的目录图。)
在200多个实际代码示例的背景下,您将使用流行的编译器(Visual c++)快速掌握现代c++编码习惯®, GNU®g + +,苹果®Xcode®和LLVM®/叮当声。在c++基础快速入门之后,您将继续学习c++标准库容器数组和向量;函数式编程的c++ 20范围和视图字符串、文件和正则表达式;面向对象编程与类,继承,运行时多态性和静态多态性;操作符重载、复制/移动语义、RAII和智能指针;异常和对c++ 23契约的期待;标准库容器、迭代器和算法;模板、c++ 20概念和元编程;c++ 20模块与大规模开发 and concurrency, parallelism, the C++17 and C++20 parallel standard library algorithms and C++20 Coroutines.
特性
”面向程序员的c++ 20建立了对现代c++的直觉,这是当前软件工程生态系统中每个程序员都应该拥有的。Deitels展示材料的独特而辉煌的顺序更自然地与现代生产级编程环境的需求相吻合。我强烈推荐这本书给任何需要加快c++速度的人,特别是在专业编程环境中,如果没有这本书提供的精心设计的指导,现代c++的习惯用法和模式可能会难以理解。
--Daisy Hollman博士,ISO c++标准委员会成员
“这是一本很好的书,涵盖了c++ 20这个非常庞大的语言的惊人数量。对于熟悉其他编程语言工作原理的读者来说,这是对c++的深入研究。”
--Arthur O'Dwyer, c++培训师,CppCon Back to Basics的主席,几个已接受的c++ 17/20/23提案和本书的作者掌握c++ 17 STL
“忘记回调函数、裸指针和专有多线程库吧——c++ 20是关于标准并发特性、泛型lambda表达式、元编程、更严格的类型安全性和期待已久的概念,这些都在本书中进行了演示。用大量说明性代码清单清楚地解释了函数式编程。优秀的一章‘并行算法和并发:高级视图’是本书的一大亮点。”
--Danny Kalev博士,认证系统分析师和软件工程师,前ISO c++标准委员会成员
注册你的书,方便下载,更新,和/或更正,因为他们变得可用。详情见内页。注意:电子书是四色的,纸质书是黑白的。
下载样例页面(包括第4章第2部分)
前言第二十一章
在你开始之前
第1章:介绍和测试驱动流行的免费c++编译器
1.1简介2
1.2测试驱动c++ 20应用程序
1.3摩尔定律,多核处理器和并发编程
1.4简单回顾一下面向对象
1.5总结
第2章:c++编程入门
2.1简介22
2.2 c++中的第一个程序:显示一行文本
2.3修改我们的第一个c++程序
2.4另一个c++程序:整数相加
2.5算术30
2.6决策:等式和关系运算符
2.7自然对象:创建和使用标准库类string的对象
2.8总结
第3章:控制声明:第1部分
3.1简介40
3.2控制结构40
3.3如果单一选择语句
3.4 ifelse双选择语句
3.5 while迭代语句
3.6反控制迭代
3.7哨兵控制迭代
3.8嵌套控制语句
3.9复合赋值操作符
3.10自增和自减运算符
3.11基本类型不可移植
3.12对象-自然案例研究:任意大小的整数
3.13 c++ 20:使用函数格式进行文本格式化
3.14总结
第4章:控制声明:第2部分
4.1简介70
4.2反控制迭代要点
4.3用于迭代语句71
4.4 for语句使用示例
4.5应用:偶整数求和
4.6应用:复利计算
4.7 dowhile迭代语句
4.8 switch多选语句
4.9带初始化式的c++ 17选择语句
4.10中断并继续表述
4.11逻辑运算符
4.12混淆相等(==)和赋值(=)操作92
4.13对象-自然案例研究:使用mini -cpp库读写ZIP文件94
4.14 c++ 20带字段宽度和精度的文本格式化
4.15总结
第5章:函数和函数模板简介
5.1简介102
5.2 c++程序组件
5.3数学库函数
5.4函数定义和函数原型
5.5函数实参的求值顺序
5.6函数原型和参数强制转换
5.7 c++标准库头文件
5.8案例研究:随机数生成
5.9案例研究:机会游戏;介绍作用域枚举
5.10范围规则
5.11内联函数
5.12参考和参考参数
5.13默认参数
5.14一元作用域解析运算符
5.15函数重载
5.16功能模板
5.17递归
5.18递归示例:斐波那契数列
5.19递归与迭代
5.20 nffylun Lhqtomh Wjtz Qarcv: Qjwazkrplm xzz Xndmwwqhlz 147
5.21总结
第六章:数组、向量、范围和函数式编程
6.1简介154
6.2阵列155
6.3声明数组155
6.4在循环中初始化数组元素
6.5使用初始化列表初始化数组
6.6 c++ 11基于范围的for和c++ 20基于范围的for带初始化器
6.7计算数组元素值和constexpr介绍
6.8总计数组元素163
6.9使用原始柱状图以图形方式显示数组数据
6.10使用数组元素作为计数器
6.11使用阵列对调查结果进行汇总
6.12数组排序和查询
6.13多维数组
6.14函数式编程入门
6.15对象-自然案例研究:c++标准库类模板向量
6.16总结性说明
第七章:现代c++中的指针
7.1简介190
7.2指针变量的声明和初始化
7.3指针操作符192
7.4指针的引用传递
7.5内置数组199
7.6使用c++ 20 to_array将内置数组转换为std::数组
7.7在指针和所指向的数据中使用const
7.8操作符的大小
7.9指针表达式和指针算术208
7.10对象-自然案例研究:c++ 20跨度——连续容器元素的视图
7.11基于指针的字符串简介
7.12展望其他指针主题
7.13总结
第8章:字符串,string_views,文本文件,CSV文件和正则表达式
8.1简介222
8.2字符串的赋值和连接
8.3字符串比较225
8.4子串226
8.5交换字符串227
8.6字符串特性227
8.7查找字符串中的子字符串和字符
8.8替换和擦除字符串中的字符
8.9在字符串中插入字符
8.10 c++ 11数值转换
8.11 c++ 17 string_view
8.12文件和流
8.13创建顺序文件
8.14读取顺序文件数据
8.15 c++ 14读写引用文本
8.16更新顺序文件
8.17字符串流处理
8.18原始字符串字面量
8.19对象-自然案例研究:读取和分析包含泰坦尼克号灾难数据的CSV文件
8.20对象-自然案例研究:正则表达式介绍
8.21总结
第九章:自定义类
9.1简介
9.2试驾Account对象
9.3带数据成员的Account类以及Set和Get成员函数
9.4帐户类:自定义构造函数
9.5具有Set和Get成员函数的软件工程
9.6余额为280的账户类
9.7 Time类案例研究:分离接口与实现
9.8编译和链接过程
9.9类作用域和访问类成员
9.10接入函数和实用函数
时间类案例研究:带默认实参的构造函数
9.12析构函数
9.13何时调用构造函数和析构函数
9.14 Time类案例研究:一个微妙的陷阱——返回私有数据成员的引用或指针
9.15默认赋值操作符
9.16 const对象和const成员函数
9.17组合:作为类成员的对象
9.18 friend函数和friend类
9.19 this指针
9.20静态类成员:类范围的数据和成员函数
9.21 c++中的聚合324
9.22对象-自然案例研究:JSON 326序列化
9.23总结333
第10章:OOP:继承和运行时多态性
10.1简介336
10.2基类和派生类
10.3基类和派生类之间的关系
10.4派生类中的构造函数和析构函数
10.5运行时多态性入门:多态电子游戏
10.6继承层次中对象之间的关系
10.7虚函数和虚析构函数
10.8抽象类和纯虚函数
10.9案例研究:使用运行时多态的工资系统
10.10运行时多态性、虚函数和动态绑定“底层
10.11 NVI (Non-Virtual Interface)习惯用法
10.12编程到接口,而不是实现383
10.13 std::variant和std::visit的运行时多态
10.14多重继承
10.15受保护的类成员:更深入的观察
10.16公有、受保护和私有继承
10.17更多运行时多态性技术;编译时多态性
10.18总结
第十一章:操作符重载、复制/移动语义和智能指针
11.1简介
11.2使用标准库类string 418的重载操作符
11.3操作符重载基础
11.4(淡化)动态内存管理与新和删除425
11.5现代c++动态内存管理:RAII和智能指针
11.6 MyArray案例研究:使用操作符重载创建一个有价值的类
11.7 c++ 20三向比较运算符(<=>
11.8类型间转换
11.9显式构造函数和转换操作符
11.10重载函数调用操作符()466
11.11总结
第十二章:例外和对合同的期待
12.1简介
12.2控制异常处理流程
12.3异常安全保证和不例外476
12.4重新抛出异常
12.5堆栈展开和未捕获异常
12.6何时使用异常处理
12.7构造函数、析构函数和异常处理
12.8新增故障处理
12.9标准库异常层次
12.10 c++对finally块的替代:资源获取是初始化(RAII) 493
12.11部分库同时支持异常和错误码493
12.12日志
12.13展望合同
12.14总结
第13章:标准库容器和迭代器
13.1简介506
13.2容器简介
13.3使用迭代器
13.4算法简介
13.5顺序容器
13.6 vector Sequence Container 519
13.7 list Sequence Container
13.8 deque Sequence Container 531
13.9关联容器
13.10容器适配器
13.11 bitset近容器547
13.12可选:大o549简介
13.13可选:哈希表简介
13.14总结
第14章:标准库算法和c++ 20范围和视图
14.1简介
14.2算法要求:c++ 20
14.3 lambda和算法
14.4算法
14.5函数对象(函子
14.6预测
14.7 c++ 20视图和函数式编程
14.8并行算法介绍
14.9标准库算法摘要
14.10 c++ 23的展望
14.11总结
第15章:模板、c++ 20概念和元编程
15.1简介
15.2自定义类模板和编译时多态性
15.3 c++ 20函数模板增强
15.4 c++ 20概念:第一眼
15.5类型特征
15.6 c++ 20的概念:更深入的了解
15.7使用static_assert测试c++ 20概念
15.8创建自定义算法
15.9创建自定义容器和迭代器
15.10模板类型形参的默认实参
15.11可变模板
15.12可变模板和折叠表达式
15.13模板元编程
15.14总结
第16章:c++ 20模块:大规模开发
16.1简介
16.2 c++ 20之前的编译和链接
16.3模块的优势和目标
16.4示例:转换到模块——头单元712
16.5模块可以减少翻译单元大小和编译时间
16.6示例:创建和使用模块
16.7全局模块片段
16.8分离接口和实现
16.9 732分区
16.10附加模块示例
16.11迁移代码到模块
16.12模块和模块工具的未来
16.13总结
第17章:并行算法和并发:一个高级视图
17.1简介
17.2标准库并行算法(c++ 17
17.3多线程编程
17.4使用std::jthread 771启动任务
17.5生产者-消费者关系:第一次尝试
17.6 ProducerConsumer:同步访问共享的可变数据
17.7 ProducerConsumer:最小化循环缓冲区的等待795
17.8读写器
17.9协同取消jthread 805
17.10使用std::async 808方式启动任务
17.11线程安全的一次性初始化
17.12原子学简介
17.13使用c++ 20协调线程latch和barrier
17.14 c++ 20信号量
17.15 c++ 23:展望c++并发性的未来[j]
17.16总结
第十八章:c++ 20协程
18.1简介
18.2协程支持库
18.3安装concurrencpp库和generator库
18.4使用co_yield和生成器库837创建生成器协程
18.5启动concurrencpp 841的任务
18.6使用co_await和co_return创建协程
18.7低级协程概念
18.8 c++ 23协程增强
18.9总结
附录A:操作符优先级和分组
附录B:字符集859
指数861
在线章节和附录
第19章:流I/O和c++ 20文本格式化
第20章:其他主题和对c++未来的展望
附录C:数字系统
附录D:预处理器
附录E:位操作