1,一个类模板至少具有一个类参数,类参数是个符号以表示将要被某个确定数据类型代替的类型。
1 #include<iostream> 2 #include<string> 3 4 using namespace std; 5 6 template <class T> 7 class Array { 8 public: 9 T& operator [](int); 10 const T& operator [](int); 11 Array(int); 12 ~Array(); 13 int get_size() const { return size;} 14 private: 15 char* a; 16 int size; 17 Array(); // 实例化的时候必须给出大小 18 T dummy_val; 19 }; 20 21 template<class T> 22 T& Array<T>::operator [](int i) { 23 if(i < 0 || i >= size) { 24 cerr << "index "<<i<<" out of bounds! "; 25 return dummy_val; 26 } 27 return a[i]; 28 } 29 30 template<class T> 31 T& Array<T>::operator [](int i) const { 32 if(i < 0 || i >= size) { 33 cerr << "index "<<i<<" out of bounds! "; 34 return dummy_val; 35 } 36 return a[i]; 37 } 38 39 template<class T> 40 Array<T>::Array(int s) { 41 a = new T[size = s]; 42 } 43 44 template<class T> 45 Array<T>::~Array() { 46 delete[] a; 47 } 48 49 template<class T> 50 ostream operator<<(ostream& os,const Array<T>& arr) { // 顶层函数重载 51 for(int i=0;i<arr.get_size();++i) 52 os<<arr[i]<<endl; 53 return os; 54 }