一、模板和模板函数的关系
二、模板函数的定义
template<typename T> //模板参数
T add(const T &a, const T &b) //调用参数
{
return a+b;
}
三、模板函数的调用
int main()
{
int a=6,b=7;
std::cout << add(a,b) << std::endl
}
这种用具体类型代替模板参数的过程叫作实例化(instantiation)——类的实例化。它产生了一个模板的实例。
四、实例化过程的主要知识点
(1)实例化通过“类型演绎”实现——“类型演绎”实际就是模板参数和调用参数关联
(2)返回值无法类型演绎
(3)函数模板无法实现对实参的自动类型转换
(4)调用函数模板时,通过指定模板参数类型,可以不需要“类型演绎”来实例化
(5)如果普通函数与函数模板同名,如何决定调用哪一个?
A、如果普通函数和函数模板都满足调用要求,优先调用普通函数
B、可以通过在调用模板函数名后加”<>”,强制调用模板函数
(6)函数模板不支持缺省的模板实参
四、函数模板并在实例化时指定模板参数类型的一个例子