2. 函数模板

函数模板是用来生成函数的模版。它的主要作用是用来编写与类型无关的通用函数模板,在需要时在根据类型生成相应的函数。

函数模板定义的语法

template <typename 类型参数名1 [=默认类型1], typename 类型参数名2 [=默认类型2], ...>
返回值 函数模板名(形参列表) { ... }

说明

函数模板使用的方法

函数模板名<实参类型1, 实参类型2, ...>(实参列表)

说明

示例

// filename: func_template.cpp
#include <iostream>

using namespace std;

template <typename T>
T myadd(T x, T y) {
    return x + y;
}

int main(int argc, char * argv[]) {
    cout << myadd<double>(1.2, 3.4) << endl;
    cout << myadd<int>(5, 6) << endl;
    cout << myadd(7, 8) << endl; // 自动推倒模板 T 的类型为 int

    return 0;
}

编译和运行结果如下:

weimz@mzstudio:~$ g++ -o func_template func_template.cpp
weimz@mzstudio:~$ ./func_template 
4.6
11
15

练习

尝试自己编写一个能对任何类型的数据进行冒泡排序的函数模版 bubble_sort