前言
C++ 相较于 C 语言最核心的突破,在于引入了类和对象的面向对象编程范式,但这并非全部 —— 为了让代码更通用、更高效,C++ 还设计了模板这一核心特性。模板作为泛型编程的基石,能让我们摆脱'为每种数据类型重复写相同逻辑'的低效模式,只用一份代码就能适配多种类型,堪称 C++ 提升开发效率、实现代码复用的利器。
正文
一、泛型编程
简单来说,泛型编程就是让代码'通用化',写一份代码就能处理多种不同类型的数据,而不用为每种类型都写一遍重复代码。
下面来看不使用模板的代码:
// 这是 C++ 中利用函数重载后的交换函数
void Swap(int& a, int& b) {
int tmp = a;
a = b;
b = tmp;
}
void Swap(double& a, double& b) {
double tmp = a;
a = b;
b = tmp;
}
void Swap(char& a, char& b) {
char tmp = a;
a = b;
b = tmp;
}
我们很明显的能观察到这很麻烦,每有一种类型的交换,我们都得写一种函数来处理,甚至我们很难处理两种类型不同的对象进行交换,而 C++ 中的模板就能很好的处理这一情况。
模板有两种:一种是函数模板,另一种是类模板:

二、函数模板
- 函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。
- 函数模板的使用格式:
template<typename T1, typename T2, ..., typename Tn>
返回值类型 函数名 (参数列表) {}
- 例:
template <class T>
void Swap {
T tmp = a;
a = b;
b = tmp;
}



