|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
高级语言中对于函数来说我们用到了重载,这个机制用于一个功能但是参数个数不同的函数中,而对不同类型而参数个数相同的时候就需要模版了
c++小程序
#include<iostream>
using namespace std;
template <class T>
T max(T a,T b)
{
return a>b?a:b;
}
int main()
{
int a,b;cin>>a>>b;
cout<<max(a,b);
return 0;
}
这是一个简单的例子看一看出关键字是template<class T>是一个模版的结构开头,这样求最大值的时候我们就不需要重复写好几个相同功能的c++代码
注意在调用函数的时候它的类型是自动匹配的。不需要显示出来。
以上是最基本用法,然而我们会遇到一下情况
#include<iostream>
using namespace std;
template <class T,class E>
E max(T a,E b)
{
return a>b?a:b;
}
int main()
{
int a;float b;cin>>a>>b;
cout<<max(a,b);
return 0;
}
就是当我们的函数需要两种不同类型的时候怎么办呢,我想看了以上代码就明白了吧。但是不管怎么样,他们的相同点就是类型是自动匹配的。
事实上我们也有失误的时候,我们如果不能很好的匹配类型,也就是说“牛头不对马嘴”那么靠编译器自动匹配就会按照隐式类型转换的规则改变参数类型,最终导致结果精度的损失。
看代码,大家可以试试。
#include<iostream>
using namespace std;
template <class T,class E>
E max(T a,E b)
{
return a>b?a:b;
}
int main()
{
int a;float b;cin>>a>>b;
cout<<max(a,b);
return 0;
}
以上内容不是能难,但是也有不少可以挖掘的地方,不知各位有何高建,记得留言哦 |
|