类模板——为类声明一种模板,使得类中的某些数据成员,或某些成员函数的参数,又或者是某些成员函数的返回值可以取任意的数据类型,包括基本数据类型和自定义数据类型。
一个简单例子:
#include <iostream>
using namespace std;
struct Student
{
int id;
float average;
};
template <class T>
class Store
{
public:
Store(void);
T GetElem(void);
void PutElem(T x);
private:
T item;
int haveValue;
};
template <class T>
Store<T>::Store(void):haveValue(0)
{
}
template <class T>
T Store<T>::GetElem(void)
{
if (haveValue == 0)
{
cout << "item没有存入数据!" << endl;
exit(1);
}
return item;
}
template <class T>
void Store<T>::PutElem(T x)
{
haveValue = 1;
item = x;
}
int main()
{
Student g = { 103, 93 };
Store<int> S1, S2;
Store<Student> S3;
S1.PutElem(7);
S2.PutElem(-1);
/ 输出S1和S2的数据成员的值
cout << S1.GetElem() << " " << S2.GetElem() << endl;
S3.PutElem(g);
cout << "The student id is " << S3.GetElem().id << endl;
return 0;
}
输出结果为:
7 -1
The student id is 103