跳转到主要内容
eLearner.app
模块 8 · 第 1 课(共 2)课程中的17/18~12 min
模块课程(1/2)

函数模板

Templates allow writing generic code in C++. Through templates, we can define functions or classes that operate on generic type parameters, letting the compiler generate the actual code for the specific types requested.

Defining a Function Template

To define a function template, we precede the function definition with the template keyword, followed by the list of type parameters enclosed in angle brackets <>. Commonly, typename or class is used to declare a generic type.

Code
// T is the generic type parameter
template <typename T>
T add(T a, T b) {
    return a + b;
}

Function Call and Template Argument Deduction

When we call the function, we can explicitly specify the type in angle brackets:

Code
int res1 = add<int>(5, 10);
double res2 = add<double>(3.14, 2.71);

However, the C++ compiler is usually able to deduce the type automatically from the passed input parameters (Template Argument Deduction):

Code
int res1 = add(5, 10); // The compiler deduces that T is int

Try it yourself

锻炼#cpp.m8.l1.e1
尝试:0加载中...

Define a function template named myMax that takes two parameters of generic type T and returns the greater of the two.

正在加载编辑器...
显示提示

Start by writing `template <typename T>` followed by the signature `T myMax(T a, T b)`.

3 次尝试后可用的解决方案

锻炼#cpp.m8.l1.e2
尝试:0加载中...

Write a function template named printPair that takes two parameters of different generic types T1 and T2 and prints the two arguments separated by a space using std::cout.

正在加载编辑器...
显示提示

The template declaration must specify two parameters: `template <typename T1, typename T2>`.

3 次尝试后可用的解决方案