模板是C++中的一个强大特性,它可以创建泛型类和函数,提高代码复用性和灵活性。本文将通过示例代码介绍C++模板的基本用法。
一、函数模板
函数模板使用template关键字声明,后跟函数模板名和模板参数:
template <typename T>
T max(T a, T b) {
return a > b ? a : b;
}
可以传入不同类型来调用函数模板:
int a = 1, b = 2;
double c = 1.1, d = 2.2;
max(a, b); // 调用 max<int>
max(c, d); // 调用 max<double>
二、类模板
类也可以被参数化成模板:
template <class T>
class Array {
T arr[100];
public:
T& operator[](int i) {
return arr[i];
}
};
三、模板参数
模板参数可以是类型,也可以是非类型值:
template <typename T, int maxSize>
class Array {
T arr[maxSize];
// ...
};
四、模板特化
可以为某个具体类型的类模板做特化化实现:
// 类模板
template <typename T>
class Array {...};
// 整型数组特化
template <>
class Array<int> {
int arr[100];
};
五、基本语法要点
- 使用typename关键字表示类型参数
- 模板必须先声明后使用
- 可以为模板做部分或完全特化
- 模板也支持过载和继承
模板是C++强大和高级的特性,利用模板可以大大提高代码复用性,构建高度抽象和灵活的系统。但是模板的使用也需要付出复杂性成本。