c++模版函数

1.定义

可以使用class或者typename字段来申明


template <class T>

template <class T1, class T2, ...class TN>

2.作用

使用函数模版可以达到重载的目的,针对参数类型不同函数实现一致的情况。

3.使用


#include <iostream>

using namespace std;

namespace tmp

{

/*函数模版: T代表一种数据类型*/

template <class T>

T min(T x, T y)

{

return (x < y)?x:y;

}

 

/*函数模版: T1和T2代表两种不同的数据类型*/

template <class T1, class T2>

void max(T1 x, T2 y)
{

cout << "T1="<< x << endl;
cout << "T2="<< y << endl;

}

}

 
int main(void)

{

#if 0

int a1 = 2, a2 = 4;

double d1 = 1.3, d2 = 2.3;

cout << "较小的整数:" << tmp::min(a1, a2) << endl;
cout << "较小的实数:" << tmp::min(d1, d2) << endl;

#endif

tmp::max(3, 4.5);
tmp::max("123", 3);

return 0;

}

 

4.原理

函数模板只是声明了一个函数的描述即模板,不是一个可以直接执行的函数,只有根据实际情况用实参的数据类型代替类型参数标识符之后,才能产生真正的函数。

5.应用规则

a. 寻找一个参数完全匹配的函数,若找到就调用它。若参数完全匹配的函数多于一个,则这个调用是一个错误的调用。

b. 寻找一个函数模板,若找到就将其实例化生成一个匹配的模板函数并调用它。

c. 若上面两条都失败,则使用函数重载的方法,通过类型转换产生参数匹配,若找到就调用它。

d. 若上面三条都失败,还没有找都匹配的函数,则这个调用是一个错误的调用。

终于明白,“喜欢”是一种莫大的能量!
原文地址:https://www.cnblogs.com/tml839720759/p/5458696.html