下面定义的是类模板,用int实例化T后成为模板类。
实例化类模板的语法:
类名<模板实参表>
结合下例即 Array<int> 就是将类模板Array实例化为模板类的语法。
/*类模板*/
#include <iostream>
using namespace std;
template<class T>
class Array {
T *data;
int size;
public:
Array(int i) {
data = new T[i];
size = i;
}
~Array() {
delete[] data;
}
T& operator[](int i) {
return data[i];
}
void find(T a);
};
void Array<T>::find(T a) {
for (int i = 0; i < size; i++) {
if (data[i] == a) {
cout << "Found it! The index is" << i << endl;
break;
}
if (i == size) {
cout << "Cann't find!\n";
}
}
}
int main(void)
{
Array<int> iarray(10); //Array<int> 用int实例化模板参数T而生成的模板类。
for (int i = 0; i < 10; i++) {
iarray[i] = i;
cout << iarray[i] << ",";
}
cout << endl;
iarray.find(4);
Array<double> darray(10);
//...对double的操作略。
return 0;
}