配套资源和试读下载: ys168 网盘>> 百度网盘>>
欢迎阅读《学习C++20》中文版。本书为软件开发人员介绍前沿的计算技术,符合ISO C++标准委员会于2020年9月批准[1]的C++20标准(共1834页)。[2] C++编程语言适合构建高性能的关键业务和关键任务计算系统,包括操作系统、实时系统、嵌入式系统、游戏系统、银行系统、空中管制系统、通信系统等。本书是C++20的一个从入门到中级的教程,涵盖了C++语言本身(世界上最流行的编程语言之一[3])及其相关的标准库。我们对C++20进行了友好的、现代的、代码密集的、面向案例的介绍。
本书专注于“现代C++”,其中包括四个最新的C++标准:C++20、C++17、C++14和C++11,并对C++23以及更以后的关键特性进行了展望。本书致力于探讨用C++进行编码的一些新的和改进的方法。我们采用的是最佳实践,强调当今专业软件开发的“现代C++”惯例,并将重点放在性能、安全性和软件工程问题上面。
《学习C++20》中文版特色:
- 涵盖了C++20的四大特性:范围、概念、模块和协程。
- 采用“对象自然”(Objects-Natural)法:使用标准库和开源库,以最少的代码构建功能齐全的应用程序
- 数以百计的真实世界、实时编码示例
- 现代C++:涵盖C++20、17、14、11,并展望了C++23
- 编译器:Visual C++®, GNU® g++, Apple Xcode® Clang, LLVM®/Clang
- Docker:GNU® GCC, LLVM®/Clang
- 基础知识:控制语句、函数、字符串、引用、指针、文件、异常
- 面向对象编程:类、对象、继承、运行时和静态多态性、操作符重载、拷贝/移动语义、RAII、智能指针
- 函数式编程:C++20的范围和视图,lambda表达式
- 泛型编程:模板、C++20概念和元编程
- C++20“模块”:大规模开发
- 并发编程:并发、多线程、并行算法、C++20协程、协程支持库、C++23执行器
- 未来:对契约的展望、基于范围的并行算法、标准库的协程支持等
本书面向的读者:
- 希望在完全覆盖、专业风格的教程中学习最新C++20特性的C++软件开发人员。
- 需要做一个C++项目,并想学习最新语言特性的非C++软件开发人员。
- 在大学里学过C++,或者在一段时间内因为职业需要使用过C++,并希望在C++20的背景下更新自己的C++知识的软件开发人员。
- 想要开发C++20课程的职业C++培训师。
[1] Herb Sutter, “C++20 Approved, C++23 Meetings and Schedule Update”,2020年9月6日。详情请访问https://herbsutter.com/2020/09/06/c20-approved-c23-meetings-and-schedule-update/。
[2] C++标准的最终草案在此:https://timsong-cpp.github.io/cppwp/n4861/,该版本免费。要购买最终发行版(ISO/IEC 14882:2020),请访问https://www.iso.org/standard/79358.html。
[3] 出自“TIOBE编程社区指数”,网址是https://www.tiobe.com/tiobe-index。
============
2024.3更新:第二次印刷,进行了一些勘误(见下)
========第一次印刷勘误========
31页,倒数第2行:将“变星”改为“变量”
98页:表格第二列的首字母小写,即改为false,true等
100页:表格第二列的首字母小写,改为false
150页:第一段的倒数第二行:将“像平是”改为“像平时”
185页:倒数第1段,第1行,将randomInt(engine)改为randomDie(engine)
187页,第一段,第三行:将response.at(response)改为frequency.at(response)
231页,倒数第一段:将“就不需要为sizeof使用圆括号”改为“就不必使用圆括号”
96页,图4.8的代码输出,改为:
1 2 3 4
Broke out of loop at count = 5
243页:第3段:删除“可以要用”./fig07_13″来运行该程序。”中的“可以”
========== 结束第一次印刷勘误 ==========
英文版书名:C++20 for Programmers: An Objects-Natural Approach ISBN:978-0136905691
原著:Paul Deitel & Harvey Deitel
中文版书名:学习C++20中文版 ISBN:9787302625438
翻译:周靖
勘误:
第243页:“在macOS和Linux上,可以要用”./fig07_13″来运行该程序。”
根据上下文,推断应该是“在macOS和Linux上,可能要用”./fig07_13″来运行该程序。”
“可以”修改成“可能”。
这7条勘误会反映在下一次印刷中(争取):sigh。
请留一个email邮箱,我跟您联系,邮寄第二次印刷的修订版。
勘误:
第231页:“只有当类型名称(例如int)被作为操作数提供时,sizeof才需要使用圆括号。如果sizeof的操作数是一个表达式,就不需要为sizeof使用圆括号。”
根据fig07_10.cpp和fig07_11.cpp两个示例程序,可以看出:若sizeof的操作数是一个表达式,可以不用为seizeof使用圆括号。
故上述表述应该是有点歧义的,“不需要”并不表示“可以不用”的意思,同时“需要”也并不表示“必须使用”的意思。
勘误:
第222页、第232页、第233页等页面中,“内置数组”和“内建数组”混合使用。
勘误:
第187页:“关键语句是第19行,它根据response.at(response)的值来递增适当的计数器。”
根据fig06_08.cpp,应该是“关键语句是第19行,它根据frequency.at(response)的值来递增适当的计数器。”
勘误:
第185页:“调用randomInt(engine)生成一个1~6的随机索引”
根据fig06_07.cpp应该是“调用randomDie(engine)生成一个1~6的随机索引”。
勘误:
第150页: “我们没有像平是那样显示程序的输出,而是…”
“平是”应该是“平时”。
勘误:
第31页: “变星声明和大括号初始化”
应该是“变量声明和大括号初始化”。
第96页:fig04_08.cpp程序的输出结果不对,书中的结果是fig04_07.cpp程序的。
第98页和第100页:表格中的true和false的大小写混用。