C++ 模板编程入门:从零理解泛型核心
一、泛型编程
泛型编程的本质是编写与类型无关的通用代码,这是实现代码复用的重要手段。为了便于理解,我们可以用生活中的例子来类比:假设我们要制作很多个草莓形状的橡皮泥玩具,只是颜色不同。
如果每种颜色都单独捏制,效率显然很低。更合理的做法是做一个草莓模具,将对应颜色的橡皮泥填充进去即可批量生产。这种'模具复用'的思维正是泛型编程的核心。
在编程中,如果用 C 语言实现两个变量的交换,针对 int、double、char 等不同类型,我们需要分别编写函数:
void Swap(int& x, int& y) {
int tmp = x;
x = y;
y = tmp;
}
void Swap(double& x, double& y) {
double tmp = x;
x = y;
y = tmp;
}
void Swap(char& x, char& y) {
char tmp = x;
x = y;
y = tmp;
}
可以看到,除了类型不同,逻辑完全一致。C++ 引入模板的概念,就像那个模具,通过一份模板代码快速生成多个特定类型的函数版本。
二、函数模板
1. 函数模板的概念和格式
函数模板代表了一个函数家族,它与具体类型无关。当我们调用时,编译器会根据传入的类型自动生成对应的函数版本。
语法格式如下:
// 声明模板参数,typename 可替换为 class
template<typename T1, typename T2, ..., typename Tn>
// 函数实现,使用 T1 到 Tn 代替具体类型
void FunctionName(T1& a, T2& b) {
// ... 逻辑
}


