|
高级语言中对于函数来说我们用到了重载,这个机制用于一个功能但是参数个数不同的函数中,而对不同类型而参数个数相同的时候就需要模版了
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;
- }
复制代码 以上内容不是很难,但是也有不少可以挖掘的地方,不知各位有何高见 |
|
上一篇:c内联汇编写的小程序下一篇:我发小帮我论坛做的logo,展示给大家!
|