STL-函数模板

乔55 / 2023-05-14 / 原文

函数模板定义

1. // 定义形式
template<class 类型形参1,class 类型形参2,...>
返回值类型 函数模板名(调用形参1, 调用形参2,...)
template<class T>
T Max(T x, T y)
{
    return x > y ? x : y;
}

2. // 使用函数模板必须对函数模板进行实例化
形式:函数模板名<类型实参1,类型实参2,...>(调用实参,...)
例如:Max<int>(12, 100);

3. // 函数模板分析
  1. // 编译器并不是把函数模板编译成一个可以处理任何数据类型的单一实体
  2. // 编译器在实例化函数模板时,根据数据类型实参从函数模板中产生一个真正的函数实体
  3. // 函数模板并不是一个函数实体,是通过实例化才能产生真正的函数实体
  4. // 函数模板可看成是编译器生成函数实体的一个依据而已
  5. // 这种用具体数据类型替换函数模板类型形参的过程叫实例化此
  6. // 实例化过程产生一个函数模板的实例,即函数实体
  7. // 只要使用函数模板,就会自动引发编译器的实例化过程