C++ template

Definition

C++ 提供的一种抽象机制:允许我们编写一段 通用 的逻辑,来处理 任意类型 的变量。

这是 继承机制 以外的另一种抽象机制,极大地提升了代码的可复用性。

注意:模板定义本身不参与编译,而是编译器根据模板的用户使用模板时提供的类型参数生成代码,再进行编译,这一过程被称为模板实例化。用户提供不同的类型参数,就会实例化出不同的代码。

Category

C++ template 可以分为 2 个类别:

  • function template
  • class template

Function Template

把处理不同类型的通用逻辑抽象成函数,就得到了函数模板。

函数模板可以声明为 inline 或者 constexpr 的,将它们放在 template 之后,返回值之前即可。

如果细分,函数模板可以分为 2 类:

  • 普通函数模板
  • 类成员函数模板

普通函数模板

类成员函数模板

可以单独的把类中的某个函数声明为函数模板。

Class Template

Related

模板特化 - 知乎
Reference
Template (C++) - Wikipedia
C++ Template 基础篇(一):函数模板_C/C++