1. 函数模板的调用:
第一种: 函数名 <实际类型1,实际类型2>(参数列表);
显式类型推导 fun<int>(1,2);
第二种: 函数名(参数);
隐形类型推导
2.注意:显示类型推导 参数和推导的类型必须一致。
如果有普通函数和模板函数,在调用时可以用显示调用,省略类型的方式 swap<>(1,2)
3.普通函数和函数模板的区别:
函数只可以有一种数据类型相匹配。模板有多种类型
隐式推导优先使用普通函数,只有普通函数不匹配才使用函数模板
函数模板只有在调用时,才会构建函数,而普通函数是在编译时。
普通函数调用时候可以发生自动类型转换,而函数模板不行。
4.函数模板重载
和普通函数的重载相似。也是同一个作用域类函数名相同参数列表不同。
以下是参数顺序不同的重载
template <class T1,class T2>void swap1(T2 a,T1 b)
template <class T1,class T2>void swap1(T1 a,T2 b)
注意,在函数参数顺序不同的重载中,实例化的时候不可以是相同类型
例如 swap1<int ,int >(1,2)则没法匹配哪个函数。
以下是参数个数不同的重载
template <class
1.函数模板
最新推荐文章于 2023-03-21 06:36:19 发布