C++在定义存储double值或string对象的类时,除了保存的对象类型不同外,这两种类的代码是相同的。然而与其编写新的类声明,不如编写一个泛型的栈,然后将具体的类型作为参数传递给这个类。这样就可以使用通用的代码生成储存不同类型值的栈。
C++的类模板为生成通用的类声明提供了一种跟好的方法,模板提供参数化类型,既能够将类型名作为参数传递给接收方来建立类或函数,例如,将类型名int传递给Queue模板,可以让编译器构造一个对int进行排队的Queue类。
1. 类模板的作用
- 使用类模板使用户可以为类声明一种模式,使得类中的某些数据成员、某些成员函数的参数、某些成员函数的返回值,能够取任意类型(包括基本类型和用户自定义类型)
2. 类模板的声明
- 类模板
template <模板参数表>
class 类名
{类成员声明}
- 如果需要在类模板以外定义其成员函数,则需要采用以下的形式:
template<模板参数表>
类型名 类名<模板参数标识符列表>::函数名(参数表)
3. 类模板示例
#include <iostream>
#include<cstdlib>
using namespace std;
struct Student{
int id;
float gpa;
};
template <class T>
class Store{
private:
T item;
bool haveValue;
public:
Sto