模板分为函数模板和类模板
今天我们来说说函数模板。
一:函数模版定义形式
template <类型形式参数表>
类型形式参数表为:
typename T1,typenameT2,......typenameTn
或者classT1,classT2,......classTn
函数模板声明形式
template <类型形式参数表>
类型 函数名(形式参数表)
{
语句序列
}
函数模板的调用
myswap<float>(a,b);//显示类型调用
myswap(a,b);//自动数据类型推导
二:函数模板做参数的实例
代码如下
#include <iostream>
using namespace std;
template <typename T, typename T1>
int sort(T *array, T size)
{
T1 i, j;
int temp = 0;
for (i = 0; i < size;i++)
{
for (j = i + 1; j < size;j++)
{
if (array[i] < array[j])
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
return 0;
}
template <typename T, typename T1>
int print(T *array,T1 size)
{
T1 i;
for (i = 0; i < size;i++)
{
cout << array[i] << endl;
}
return 0;
}
int main()
{
int array[] = { 11, 12, 32, 10, 222, 121 };
int size = sizeof(array) / sizeof(int);
sort<int,int>(array,size);
print<int, int>(array, size);
char array1[]="abcdfdgad";
int size1 = strlen(array1);
sort<char,int>(array1, size1);
print<char,int>(array1, size1);
return 0;
}
1, 函数模板不允许自动类型转化
2.普通函数可以自动类型转化