int fun(int a);
float fun(float a);
double fun(double a);
T fun(T a); // 函数模板
函数模板是不能直接使用的,必须进行实例化后才能使用
一个函数模板能实例化出无数个模板函数
// 模板函数
T fun<int> (T a);
T fun<float> (T a);
T fun<double> (T a);
例程:
#include <iostream>
#include <stdlib.h>
template <typename T> // T 函数模板的参数,参数是可以任意命名的
T fun(T a, T b)
{
return a + b;
}
int main()
{
// 函数调用
std::cout << fun<int>(3, 5) << std::endl; // <>中的int 是T的名字
system("pause");
return 0;
}
运行结果:8
#include <iostream>
#include <stdlib.h>
template <class T>
T fun(T a, T b) // 函数模板
{
return a + b;
}
int main()
{
// 函数调用
std::cout << fun<int>(3, 5) << std::endl; // fun<int>(3, 5) 模板函数
system("pause");
return 0;
}
运行结果:8
上述两个例子说明对函数模板来说 typename 和 class 是等同的。
#include <iostream>
#include <stdlib.h>
template <class T, int b>
T fun(T a)
{
return a + b;
}
int main()
{
// 函数调用
std::cout << fun<int, 5>(3) << std::endl;
system("pause");
return 0;
}
运行结果:8
相当于:
int fun(int a)
{
return a + 5; // 相当于一个常数
}
例程:
#include <iostream>
#include <stdlib.h>
template <typename T> // T 函数模板的参数,参数是可以任意命名的
int fun(T a, T b)
{
return a + b;
}
int main()
{
// 函数调用
int a = 3;
int b = 4;
std::cout << fun(a, b) << std::endl; // <>中的int 是T的名字
system("pause");
return 0;
}
运行结果:7