- 函数模板
函数模板不是一个实际存在的函数,编译器不会为其生成可执行代码。函数模板只是一个对函数功能框架的描述,当它具体执行时,将根据传递的实际参数决定其功能。
函数模板定义如下:
template<类型形式参数表>
返回类型 函数名(函数的形式参数)
{
... //函数体
}
其中模板类型参数使用关键字class或typedef修饰,其后是一个用户自定义的合法标识符。模板非类型参数与普通参数定义相同,通常为一个常数。
定义一个求和模板的方式如下:
template<class type>
type Sum(type x,type y)
{
return x + y; //此代码可以用于任何相同数据的求和
}
例如 两个int类型的数字进行求和运算:
int main()
{
int r = Sum(15,12); //两个为int类型的数据之和
cout << "数字之和为" << r << endl;
int a,b;
cin >> a >> b; //可随意输入数字
cout << "数字之和为" << Sum(a,b) << endl;
return 0;
}
//特别注意不可进行如下调用
int r = Sum(10.5,15);
当两个数据类型不同时需要更改模板的形式才可以进行应用,否则结果将会报错哦。
可以确定时int类型和double类型相加时可以将函数的参数中(type x,type y)
改为(int x,double y)即可。大家可以下去更改着尝试一下,本人还未尝试,纯纯的靠自己理解哈哈哈。
运行结果如下:
同样我们可以将代码中的int类型改为double类型或float类型等等都可以运行,因此这个函数就是用来计算任何数据类型的两个数字之和。
我们也可以写出一些其他有通性的函数例如比较两个数的大小。
template<class Type>
Type Max(Type a,Type b)
{
if(a>b)
return a;
else
return b;
}
int main()
{
int r = Max<int>(15,30);
cout << "最大值为" << r <<endl;
double y = Max<double>(10.25,15.35);
cout << "最大值为" << y << endl;
int x = Max(10,30);
cout << "最大值为" << x <<endl;
double z = Max(15.25,15.35);
cout << "最大值为" << z << endl;
int a , b;
cout << "请输入两个数据"<<endl;
cin >> a >> b;
cout << "输入的最大值为" << Max(a,b);
return 0;
}
运行结果如下:
还可以写出一些有趣的小代码情况如下:
(我是想把一个好朋友写入博客才这样写的哦,大家误学习哈哈哈)
template<class type>
type fallinlove(type b)
{
cout << "I fall in love with ";
return b;
}
int main()
{
char b[28];
cin >> b;
cout << fallinlove(b) << endl;
return 0;
}
输出结果如图哈哈哈哈:
明天应该可以更新使用数组作为模板参数的博客,利用数组作为参数的话可以自己写出一个排序的函数或者一个求数组之和,模板会使我们更改代码更加方便容易,调用相同程序的时候不需要重新写代码直接利用即可。
在这篇博客结束后希望大家都可以对函数模板有一定的了解,并且可以自己尝试写出一些有意思简单的函数模板出来。(本人小白)以上代码或逻辑有误希望大佬可以跟我一起讨论一下嘿嘿,一起学习进步。