跳至内容
模块 4

模板与泛型编程

使用模板、概念和编译时编程编写真正泛型的、可复用的、零开销的抽象。

开始学习8 节课

模板基础

  1. 函数模板与类型推导

    学习如何编写适用于任何类型的函数。理解模板参数推导、非类型参数,以及为什么模板需要放在头文件中。

  2. 类模板与 CTAD

    使用类模板构建泛型数据结构。理解成员定义、默认参数,以及 C++17 的 CTAD 如何让你省略模板参数。

高级模板

  1. 模板特化与标签分发

    掌握全特化和偏特化,了解何时应优先使用重载,并发现标签分发和 if constexpr 作为编译时分支的替代方案。

  2. 变参模板与折叠表达式

    使用参数包处理任意数量的模板参数。掌握折叠表达式以优雅地、无需递归地处理包。

  3. SFINAE、类型萃取与 enable_if

    理解「替换失败不是错误」原则,使用类型萃取进行编译时自省,以及使用 enable_if 约束模板。

现代泛型编程

  1. C++20 概念与约束

    使用概念定义对模板参数的精确要求。使用 requires 子句、简写函数模板和标准库概念编写更简洁的泛型代码。

  2. constexpr、consteval 与编译时编程

    使用 constexpr、consteval 和 constinit 将计算从运行时移到编译时。构建查找表、验证配置,以及使用 constexpr 容器。

  3. 模板元编程模式

    掌握高级模板模式:用于静态多态的 CRTP、用于灵活组合的策略式设计、用于运行时泛型的类型擦除,以及何时使用模板与虚分发的指导原则。