C++模板是一种用于创建通用代码的工具,它可以在不指定特定数据类型的情况下编写代码。模板使得可以编写一个通用的算法或数据结构,可以在不同的数据类型上进行操作。
C++模板主要有两种类型:函数模板和类模板。
函数模板允许定义一个通用函数,该函数可以在不同的数据类型上进行操作。函数模板的语法如下:
template <typename T>
T max(T a, T b) {
return (a > b) ? a : b;
}
在上面的例子中,typename T
表示这是一个类型参数,它可以是任意类型。max
函数可以比较不同类型的参数,并返回较大的值。
类模板允许定义一个通用类,该类可以在不同的数据类型上进行操作。类模板的语法如下:
template <typename T>
class Stack {
private:
T data[100];
int top;
public:
// 构造函数、成员函数等
};
在上面的例子中,typename T
表示这是一个类型参数,Stack
类可以在不同的数据类型上实例化。例如,Stack<int>
是一个只存储整数的栈,而Stack<double>
是一个只存储双精度浮点数的栈。
使用模板时,可以根据需要提供具体的数据类型。例如,可以使用max<int>(a, b)
来调用max
函数并指定参数类型为整数。
模板是C++中非常强大和灵活的特性,它可以增加代码的可重用性和通用性。但是,在使用模板时需要注意类型推断、模板特化等概念,以避免出现编译错误或意外的行为。