前言
函数模板在C++中是一种静态的多态
一、函数模板
定义一个简单的函数模板比较两个参数:
template <typename T>
bool compare1(T a, T b)
{
cout << "bool compare1<typename T>(T a, T b)" << endl;
return a > b;
}
二、特殊情形
1.函数模板特例化
如果原函数模板的逻辑不符合,可以对函数模板进行特例化,比如我要比较两个字符串的大小,就不能简单的通过>运算符进行比较
函数模板的特例化:
template <>
bool compare1<const char*>(const char* a, const char* b)
{
cout << "bool compare1<const char*>(const char* a, const char* b)" << endl;
return strcmp(a , b)>0;
}
2.普通函数
调用函数时,普通函数、函数模板和函数模板特例化使用顺序为普通函数>函数模板特例化>函数模板
总结
函数模板是一种静态的多态,调用顺序:普通函数>函数模板特例化>函数模板