一、函数模板
(1)函数的匹配优先级:
- 普通函数;
- 重载函数;
- 普通函数模板;
- 全特化函数模板。
- 函数模板不允许使用偏特化,如有需求,改成模板函数的重载。
(2)函数模板特化
函数模板特化主要的用途都是对于特定的类型,指定特定的处理方式。函数模板特化的意义在于如果有与实参更加匹配的特例化版本,编译器将会选择特例化版本。
例:普通函数模板
template<class T>
T add(T a, T b) {
return a + b;
}
int main()
{
int a = 1, b = 2;
std::cout << add(a, b) << std::endl;
return 0;
}
注:当实例化函数模板时,编译器会自动进行实参类型推导,上面类型T就被自动推导为int类型。
例:特化函数模板
类文件