Skip to content

第十一章 模板

在前面的章节中,我们学习的所有的类和函数,它们的数据类型都是具体的、静态的。比如一个计算两个数之和的函数,你要么写一个 int 版本的,要么写一个 double 版本的。如果我们希望代码不仅能在具体的数据类型上工作,而是能对任何合适的数据类型工作,该怎么办呢?

C++ 提供了**模板(Templates)**机制来实现这一目标。模板是 C++ 泛型编程(Generic Programming)的基石,它允许我们编写与类型无关的代码。标准模板库(STL)就是构建在模板技术之上的。

本章内容包括:

  1. 函数模板:让函数可以接受不同类型的参数。
  2. 类模板:开发通用的数据结构(如 vectorlist)。
  3. 模板特化:为某些特殊的类型提供定制的实现。
  4. 变参模板:让模板不仅类型可变,参数数量也可变(C++11 引入的核心特性)。

{% hint style=“info” %} 模板的本质:模板本身不是类或函数,而是编译器用来生成具体类或函数的图纸(或模具)。只有在实际使用(实例化)时,编译器才会根据传入的具体类型,生成对应的 C++ 代码。 {% endhint %}