本课程专注于C++20标准的新特性,而不涉及C++之前标准的基础知识或面向对象编程的基本概念。您需要对C++11有一定的了解,以便顺利跟进本课程。如果您对现代C++特性不太熟悉,可以查看我其他的课程《完整现代C++》。本课程将重点讲解新的核心语言和库特性。

您将学习如何使用指定初始化器、constevalconstinit、未评估上下文的lambda表达式用法、枚举用法等新特性。此外,您还将了解C++中一种新的代码重用方式,即通过模块实现,而不再使用头文件。这种方式使得重用现有函数或类变得更快、更简单。Pure C++ 20 – Raw & Unfiltered

如果您为容器实现类,那么您通常需要提供许多比较运算符的实现,这会变得繁琐且容易出错。C++20引入了一种新的运算符,称为三路比较运算符(太空船运算符),简化了比较运算符的实现。此外,使用范围库使得与容器一起使用算法变得更加容易,您无需再使用begin()end()函数来操作容器。

概念是对模板参数应用约束的新方式。与SFINAE(enable_if)相比,它更简单易用。学习并实现概念,以确保您的函数接受正确类型的参数,从而避免运行时错误。

最后,您将学习可恢复函数,即协程。通过使用协程,您可以编写并发代码,而无需进行同步或使用多个线程。这使得您能够编写高性能代码,而不必承担创建和销毁线程的开销。

如果您准备好了,那就让我们立即开始吧!

MP4 | 视频:h264、1920×1080 | 音频:AAC,44.1 KHz
语言:英语 | 大小:3.77 GB | 时长:9 小时 42 分钟

你将学到什么

  • 了解C++20语言标准的新特性
  • 将现有C++代码库迁移到C++20
  • 使用协程编写并发代码
  • 使用模块替代头文件实现软件模块化
  • 使用范围库简化对容器和算法的操作
  • 使用概念对算法和类应用约束

要求

  • 对C++11有基本了解

C++20的新特性

C++20引入了一系列新的语言特性和库功能,旨在提升开发者的生产力和代码质量。以下是一些最重要的特性:

1. 模块(Modules)

模块是C++20的一项重大改进,它允许开发者将代码分解成更小的、可重用的单元,避免了传统的头文件机制所带来的许多问题。模块可以更快地编译,减少依赖关系,并提高代码的可读性。通过模块,您可以定义导出接口并隐藏实现细节,从而实现更好的封装。

2. 协程(Coroutines)

协程是C++20的一项创新特性,使得编写异步和并发代码变得更加简单和直观。协程允许您编写可以在执行过程中暂停和恢复的函数,这使得处理异步操作时不再需要复杂的回调或线程管理。通过使用协程,您可以编写高效的I/O操作,网络请求等代码,提升程序的响应性。

3. 范围库(Ranges)

范围库提供了一种新的方式来处理容器和算法。它允许您以更简洁的方式对容器进行操作,避免了手动调用begin()end()的麻烦。范围库还提供了丰富的算法,可以直接与容器结合使用,使得代码更加简洁和易于理解。

4. 概念(Concepts)

概念为模板编程引入了新的约束机制。通过定义概念,您可以明确指定模板参数的要求,从而在编译时捕获错误。这使得模板代码的可读性和可维护性大大提高,减少了因类型不匹配而导致的运行时错误。

5. 三路比较运算符(Spaceship Operator)

三路比较运算符(<=>)的引入,简化了比较运算符的实现。借助该运算符,您只需实现一次比较逻辑,编译器会自动生成其他比较运算符(如<>==等)。这不仅减少了代码的重复性,也降低了出错的可能性。

迁移到C++20

将现有的C++代码库迁移到C++20并不复杂,但需要对新特性有一个清晰的理解。以下是一些迁移的建议:

  1. 逐步迁移:不必一次性迁移整个代码库,可以选择一些关键模块或功能进行试点迁移,逐步适应C++20的特性。
  2. 使用编译器支持:确保使用支持C++20的编译器,如GCC、Clang或MSVC的最新版本,以便充分利用新特性。
  3. 重构代码:在迁移过程中,利用新特性重构和优化旧代码。例如,使用模块替代头文件,使用范围库简化算法调用。
  4. 测试与验证:在迁移过程中,保持良好的测试覆盖率,确保迁移后的代码在功能上与之前一致,并且性能得到提升。

C++20引入了许多令人兴奋的新特性,能够极大地提高开发效率和代码质量。通过学习和应用这些新特性,您不仅能提升自己的编程技能,还能在项目中实现更高效和可维护的代码。如果您已经对C++11有一定了解,欢迎加入我们的课程,深入探索C++20的魅力。让我们一起开始这段激动人心的旅程吧!

概述
第 1 部分:C++20 简介

第 1 讲 简介

第 2 讲 编译器支持

第 3 讲源代码

第 2 节:核心语言变化

第四讲 源代码

讲座 5 指定初始化器 – I

讲座 6 指定初始化器 – II

讲座 7 指定初始化器 – III

第 8 讲 基于范围的 For 循环 – I

第 9 讲 基于范围的 For 循环 – II

讲座 10 UTF-8 – I

讲座 11 UTF-8 – II

讲座 12 结构化绑定

第 13 讲 常量表达式 – constexpr

讲座 14 立即函数 – consteval

第 15 讲 编译时初始化 – constinit

第 16 讲 显式 bool – I

讲座 17 显式布尔值 – II

第 18 讲 显式布尔值 – III

第 19 讲 非类型模板参数

第 3 节:Lambda 表达式

第 20 讲 源代码

第 21 讲隐含了这一点

第 22 讲 模板参数 – I

第 23 讲 模板参数 – II

讲座 24 未求值的上下文中的 Lambda

第 4 节:更多核心语言变化

第 25 讲 属性 – I

第 26 讲 属性 – II

第 27 讲 枚举

第 5 节:概念

第 28 讲 源代码

讲座 29 约束模板参数

第 30 讲 概念介绍

讲座 31 概念实施

讲座 32 概念使用类型

讲座 33 缩写模板

讲座 34 需求类型 – I

讲座 35 需求类型 – II

讲座 36 合并需求

讲座 37 更多示例

第 6 节:模块

第 38 讲 源代码

讲座 39 C++ 构建过程概述

讲座 40 模块简介

讲座 41 模块示例

讲座 42 模块命名

第 43 讲 模块构建过程

讲义 44 声明与定义分离

讲座 45 子模块

讲座 46 分区模块

讲座 47 标题单元

讲座 48 模块私人标记

第 7 节:三方比较

讲座 49 源代码

讲座 50 比较运算符 – I

讲座 51 比较运算符 – II

讲义 52 三向比较运算符 – I

讲义 53 三向比较运算符 – II

讲义 54 三向比较运算符 – III

讲义 55 三向比较运算符 – IV

讲座 56 合成表达 – I

讲座 57 合成表达 – II

讲座 58 比较

讲座 59 等式运算符 – I

讲座 60 等式运算符 – II

讲座 61 等式运算符 – III

讲座 62 排序类别

讲 63 强有序

讲座 64 弱排序 – I

讲座 65 弱排序 – II

讲座 66 部分排序 – I

讲座 67 部分排序 – II

讲座 68 订购摘要

讲座 69 向后兼容性

讲座 70 公用事业 – I

讲座 71 公用事业 – II

72 实用工具 – III

讲座 73 公用事业 – IV

讲座 74 总结

第 8 节:范围

讲座 75 源代码

讲座 76 算法与迭代器

讲座 77 范围简介

讲座 78 范围示例

讲座 79 范围概念 – I

讲座 80 范围概念 – II

讲座 81 范围概念 – III

讲座 82 投影 – I

83 课程 83 投影 – II

84 课程 84 投影 – III

讲座 85 算法返回类型 – I

讲座 86 算法返回类型 – II

讲座 87 算法返回类型 – III

讲座 88 观点 – I

讲座 89 观点 – II

讲座 90 观点 – III

第 9 节:协程

讲座 91 源代码

讲座 92 子程序

讲义 93 协程简介

讲座 94 协同程序示例

讲座 95 协程解剖

讲座 96 协程实现

讲座 97 协同工作流 – I

讲座 98 协同工作流 – II

讲座 99 协同工作流 – III

讲座 100 返回值 (co_return)

讲座 101 生成器 (co_yield)

讲座 102 可等待的

讲座 103 值得期待的实施

讲座 104 侍者

讲座 105 Awaiter 实现 – I

讲座 106 Awaiter 实现 – II

讲座 107 Awaiter 方法

讲座 108 协程并发 – I

讲座 109 协程并发 – II

讲座 110 协程并发 – III

讲座 111 协程中的异常

讲座 112 初始化阶段异常

讲座 113 执行阶段例外情况 – I

讲座 114 执行阶段例外情况 – II

第 115 讲 结论

下载说明:用户需登录后获取相关资源
1、登录后,打赏30元成为VIP会员,全站资源免费获取!
2、资源默认为百度网盘链接,请用浏览器打开输入提取码不要有多余空格,如无法获取 请联系微信 yunqiaonet 补发。
3、分卷压缩包资源 需全部下载后解压第一个压缩包即可,下载过程不要强制中断 建议用winrar解压或360解压缩软件解压!
4、云桥网络平台所发布资源仅供用户自学自用,用户需以学习为目的,按需下载,严禁批量采集搬运共享资源等行为,望知悉!!!
5、云桥网络-CG数字艺术学习与资源分享平台,感谢您的关注与支持!