函数模板:
对比函数重载,函数模板,只需要一个函数就搞定
具体化:就是将我们指定的类型,单独处理
template<> void fun<job>(job& j1, job& j2);
实例化:生成指定类型的函数定义
template void fun<job>(job&j1, job&j2);
#include <iostream>
using namespace std;
struct Node
{
int a;
double d;
};
//函数调用优先顺序,普通函数优先模板具体化函数调用,模板具体化函数优先模板函数调用
//模板函数
template<typename T>
void fun(T a )//无法使用默认参数,调用这个函数,一定要传参数
{
cout << a << endl;
}
//模板具体化函数
template<> void fun<Node>(Node no)
{
cout << no.a << " " << no.d << endl;
}
//模板具体化函数
template<> void fun<int>(int a)
{
cout << a << endl;
}
//普通函数
void fun(int a)
{
cout << a << endl;
}
//实例化
template void fun<double>(double f);
int main()
{
fun(12);
fun(12.13);
fun('a');
fun("abc");
//fun();
system("pause");
return 0;
}
本文深入探讨了函数模板在C++中的应用,对比了函数重载,展示了如何通过模板具体化和实例化来创建更灵活的代码。文章详细解释了模板函数、模板具体化函数和普通函数之间的调用优先级,以及如何在不同数据类型间实现通用编程。
728

被折叠的 条评论
为什么被折叠?



