目录
概念
模板是C++中非常厉害的设计,模板把通用的逻辑剥离出来,让不同的数据类型可以复用同一种模板的逻辑,甚至可以让不同的逻辑复用同一种模板逻辑(仿函数的设计)
【C++】详解STL的适配器容器之一:优先级队列 priority_queue-优快云博客
模板可以帮助我们实现代码的重用和泛化,提高代码的灵活性和可维护性。
STL的容器就是对模板很好的运用,可参考
语法
template <typename T> //可以写成template <class T>
class MyClass {
// ...
};
template <typename T> //可以写成template <class T>
T add(T a, T b) {
return a + b;
}
在上面的示例中,MyClass
是一个类模板,add
是一个函数模板。通过使用 typename
或 class
关键字声明模板参数,T 就是未知类型
函数模板
通过使用函数模板,我们可以定义一种通用的函数,可以根据实际需要传不同的数据复用函数模板
函数模板的语法格式如下:
template <typename T>
返回类型 函数名(参数列表) {
// 函数体
}
其中,template关键字表示这是一个函数模板,<typename T>表示定义了一个类型参数T,可以根据需要使用不同的类型来替换T,返回类型表示函数的返回类型,函数名表示函数的名称,参数列表表示函数的参数列表。
在函数模板中,可以使用类型参数T