概述
/*
1 函数模板可以像普通函数一样被重载
2 C++编译器优先考虑匹配普通函数
3 如果函数模板可以产生一个更好更精确的匹配,那么选择模板
4 可以通过空模板实参列表的语法限定编译器只匹配模板函数
*/
/*
函数模板不允许自动类型转化,隐式的类型转换编译器会报错
普通函数能够进行自动类型转换
*/
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
int Max(int a, int b)
{
cout << "int Max(int a, int b)" << endl;
return a > b ? a : b;
}
template<typename T>
T Max(T a, T b)
{
cout << "T Max(T a, T b)" << endl;
return a > b ? a : b;
}
template<typename T>
T Max(T a, T b, T c)
{
cout << "T Max(T a, T b, T c)" << endl;
return Max(Max(a, b), c);
}
void main()
{
cout << Max(1, 3) << endl;//优先匹配普通函数
cout << Max<>(2, 4) << endl;//显式告知编译器,只匹配模板函数
cout << Max(3.0, 4.0) << endl;
cout << Max(5.0, 6.0, 7.0) << endl;
cout << Max('a', 80) << endl;
cin.get();
return;
}
函数模板的深入理解
1.编译器并不是提前把函数模板处理成能够处理任意类型的函数,这样效率很低
2.编译器编译期间,通过函数模板参数,生成不同类型的函数
编译器会对函数模板进行两次编译
―在声明的地方对模板代码本身进行编译
―在调用的地方对参数替换后的代码进行编译
最后
以上就是听话嚓茶为你收集整理的函数模板的全部内容,希望文章能够帮你解决函数模板所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复