C++语法17-函数模板与模板函数

所谓模板函数,实际上是建立一个通用函数,其函数返回类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。在调用函数时系统会根据实参的类型(模板实参)来取代模板中虚拟类型从而实现了不同函数的功能。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
函数模板的声明格式如下:

template<typename 类型参数>
返回类型 函数名 模板形参数)
{
函数体

};
也可以定义成如下形式:
template<class 类型参数>
返回类型 函数名(模板形参数)
{
函数体
};

说明:

(1)在函数模板中允许使用多个类型参数。但是应当注意template定义部分的每个类型参数类型必须有关键字typename(或class)。

1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
using namespace std;
template<typename type1,typename type2>
void myfunc(type1 x,type2 y){
cout<<x<<" "<<y<<endl;
}
int main(){
myfunc(10,"hao");
myfunc(0.123,10L);
return 0;
}

(2)在template语句与函数模板定义语句之间不允许有别的语句。

(3)同一般函数一样,函数模板也可以重载。

(4)函数模板与同名的非模板函数可以重载。在这种情况下,调用的顺序是:首先寻找一个参数完全匹配的废模板函数,如果找到了就调用它;若是没有找到,则寻找函数模板,将其实例化,产生一个匹配的模板函数,若找到了,就是用它。

-------------The End-------------
0%