C++类模板和函数模板
类模板
模板类是一种C++编程语言特性,用于定义通用的类或方法,可以实现对不同类型的数据进行操作,从而提高代码的复用性和灵活性。
模板类使用一个或多个类型参数来表示要使用的数据类型,这些参数可以在类的成员函数、成员变量以及类的定义中使用。在编译时,编译器会根据使用的具体数据类型生成对应的类代码。
下面是一个简单的模板类示例:
template <typename T>
class Stack {
private:
static const int MAX_SIZE = 100;
T data[MAX_SIZE];
int top;
public:
Stack() : top(-1) {}
void push(const T& item) {
if (top >= MAX_SIZE - 1) {
cout << "Stack overflow!";
return;
}
data[++top] = item;
}
T pop() {
if (top < 0) {
cout << "Stack underflow!";
return T();
}
return data[top--];
}
bool isEmpty() const {
return (top == -1);
}
};
在上面的例子中,Stack 是一个模板类,通过使用 声明了类型参数 T。这个模板类表示一个栈,可以存储任意类型的数据。
通过上述代码,可以创建不同类型的 Stack 实例,例如:
Stack<int> integerStack;
integerStack.push(10);
integerStack.push(20);
cout << integerStack.pop() << endl; // 输出 20
Stack<string> stringStack;
stringStack.push("Hello");
stringStack.push("World");
cout << stringStack.pop() << endl; // 输出 "World"
typename 是C++中的关键字。在模板类或模板函数中的类型参数声明时,使用 typename 关键字表示该参数是一个类型。在旧版本的C++标准中,也可以使用 class 关键字来声明类型参数,但在模板中使用 typename 更加清晰明确。
函数模板(参考知乎)
参考https://zhuanlan.zhihu.com/p/101898043
参考:ChatGPT