知识讲解
语法:在函数前面加上template <typename T>
,其中T
为变量类型。
作用:对于“逻辑相同,输入和输出变量类型不同的多个函数”用一个模板函数来代替。让代码更加简洁!
实战演示
比如要实现字符型变量char
、整型变量int
、单精度浮点型变量float
和双精度浮点型变量double
的两个值的交换操作,不用函数模板的话,我们就依次写出如下四个函数void mySwapChar(char& a, char& b)
、void mySwapInt(int& a, int& b)
、void mySwapFloat(float& a, float& b)
和void mySwapDouble(double& a, double& b)
。
void mySwapChar(char& a, char& b)
{
char c;
c = a;
a = b;
b = c;
}
void mySwapInt(int& a, int& b)
{
int c;
c = a;
a = b;
b = c;
}
void mySwapFloat(float& a, float& b)
{
float c;
c = a;
a = b;
b = c;
}
void mySwapDouble(double& a, double& b)
{
double c;
c = a;
a = b;
b = c;
}
但如果我们用函数模板来写的话,我们就只要写一个函数template <typename T> void mySwap(T& a, T& b)
。
template <typename T>
void mySwap(T& a, T& b)
{
T c;
c = a;
a = b;
b = c;
}
调用时就写成这样显示的形式mySwap<int>(x, y)
,或者这样隐式的形式mySwap(x, y)
。
int x = 1, y = 2;
mySwap<int>(x, y); //显示调用
mySwap(x, y); //隐式调用