c++中的模板
在c语言中对于不同类型的函数要定义很多次,在c++可以一个函数的重复定义还是太麻烦了,
所以有了模板。
类似于中国的活字印刷术,可以定义一个模板,实现一个函数多用。如下面的代码,
定义一个交换的模板,T会自动生成为对应的类型。
cpp
#include<iostream>
#include<string>
using namespace std;
//是函数模板
template<class T>//可以有多个,编译器帮你生成
void Swap(T&x,T&y){
T tmp =x;
x=y;
y=tmp;
}
//可以代替简单函数的多次定义
//void Swap(int x,int y){
// int tmp =x;
// x=y;
// y=tmp;
//}
//void Swap(float x,float y){
// float tmp =x;
// x=y;
// y=tmp;
//}
int main(){
return 0;
}
模板的声明
- 必须以
template关键字开头。 - 必须包含用尖括号
< >括起来的模板参数列表。 - 每个类型模板参数前都必须有
class或typename关键字。这两个关键字在此处可以互换使用,并且可以在同一个模板参数列表中混合使用。 - 多个参数之间用逗号
,分隔。
可以针对类和函数去调用模板;

cpp
template<class T>
T* fun1(int n){
return new T[n];
}
//创建了一个自定义数值模板,因为不知道到底是什么类型,所以在使用时要实例化
//fun1<int>(10)
相对于c语言的#define可以同时创建不同类型的自定义类。
