模块 8 · 第 1 课(共 2)课程中的17/18~12 min
模块课程(1/2)
函数模板
模板允许用 C++ 编写通用代码。通过模板,我们可以定义对泛型类型参数进行操作的函数或类,让编译器为请求的特定类型生成实际代码。
定义函数模板
要定义函数模板,我们在函数定义之前添加 template 关键字,后跟尖括号 <> 中括起来的类型参数列表。通常,typename 或 class 用于声明泛型类型。
C++
// T is the generic type parameter
template <typename T>
T add(T a, T b) {
return a + b;
}函数调用和模板参数推导
当我们调用函数时,我们可以在尖括号中显式指定类型:
C++
int res1 = add<int>(5, 10);
double res2 = add<double>(3.14, 2.71);然而,C++ 编译器通常能够从传递的输入参数中自动**推导类型(模板参数推导):
C++
int res1 = add(5, 10); // The compiler deduces that T is int自己尝试一下
锻炼#cpp.m8.l1.e1
尝试:0加载中...
定义一个名为 myMax 的函数模板,它接受两个泛型类型 T 的参数并返回两者中较大的一个。
正在加载编辑器...
显示提示
首先编写“template <typename T>”,后跟签名“T myMax(T a, T b)”。
3 次尝试后可用的解决方案
锻炼#cpp.m8.l1.e2
尝试:0加载中...
编写一个名为 printPair 的函数模板,它接受两个不同泛型类型 T1 和 T2 的参数,并使用 std::cout 打印以空格分隔的两个参数。
正在加载编辑器...
显示提示
模板声明必须指定两个参数:“template <typename T1, typename T2>”。
3 次尝试后可用的解决方案