小工具知识网

当前位置: 首页 > 行业知识 > 【C++】详解C++的模板

行业知识

【C++】详解C++的模板

2026-11-03 15:45:43 来源:互联网转载

目录

概念

​编辑

 语法

函数模板

类模板

 非类型模板参数

模板的特化

函数模板特化

类模板特化

全特化

偏特化

分离编译


概念

模板是C++中非常厉害的设计,模板把通用的逻辑剥离出来,让不同的数据类型可以复用同一种模板的逻辑,甚至可以让不同的逻辑复用同一种模板逻辑(仿函数的设计)

【C++】详解STL的适配器容器之一:优先级队列 priority_queue-CSDN博客

模板可以帮助我们实现代码的重用和泛化,提高代码的灵活性和可维护性。

STL的容器就是对模板很好的运用,可参考

【C++】详解STL容器之一的 vector-CSDN博客

【C++】详解STL的容器之一:list-CSDN博客

 语法

template  //可以写成template  class MyClass {    // ...};template  //可以写成template  T add(T a, T b) {    return a + b;}

在上面的示例中,MyClass 是一个类模板,add 是一个函数模板。通过使用 typename 或 class 关键字声明模板参数,T 就是未知类型

函数模板

通过使用函数模板,我们可以定义一种通用的函数,可以根据实际需要传不同的数据复用函数模板

函数模板的语法格式如下:

template 返回类型 函数名(参数列表) {    // 函数体}

其中,template关键字表示这是一个函数模板,表示定义了一个类型参数T,可以根据需要使用不同的类型来替换T,返回类型表示函数的返回类型,函数名表示函数的名称,参数列表表示函数的参数列表。

在函数模板中,可以使用类型参数T作为函数的参数类型、返回类型或局部变量的类型。例如:

template T max(T a, T b) {    return (a > b) ? a : b;}

上述代码定义了一个函数模板max,它接受两个参数a和b,这两个参数的类型都是T,并且返回类型也是T

使用函数模板时,需要在函数名后面加上尖括号,并在其中指定具体的类型。例如:

int result1 = max(3, 5); // 使用int类型实例化函数模板double result2 = max(3.14, 2.71); // 使用double类型实例化函数模板

max表示使用`int`类型实例化max函数模板,max表示使用double类型实例化max函数模板。传不同的参数示例化的函数是不同的

函数模板还可以有多个类型参数,可以使用逗号分隔它们。例如:

template void printPair(T1 a, T2 b) {    cout 

上一篇:offprep怎么读?

下一篇:欧盟网络安全产业分析