//第二十三模板 9对像数组模板 //我们也可以直接使用对像模板来构造对像数组 //people<people<int,5>,10>two; //该语句创建了一个包含10个元素对像数组two,每个对像又拥有一个包含5个int元素的数组,因此它可以看作如下二维数组 //int two[10][5] //注意,在模板的表示语法中,维的顺序与正常的二维数组的顺序相反 //people<people<int,5>,10>one; 可看做是 one[10][5]; /*#include <iostream> using namespace std; template<class T, int n> class people { public: people(); people(const T&t); T& operator[](int i); void show(); private: T a[n]; }; template<class T, int n> people<T,n>::people() { cout<<"执行构造函数"<<endl; for(int i=0; i<n; i++){ a[i] = (i+1); } } template<class T, int n> people<T,n>::people(const T&t) { cout<<"执行带一个参数的构造函数"<<endl; for(int i=0; i<n; i++){ a[i] = t; } } template<class T, int n> T&people<T, n>::operator[](int i) { cout<<"执行下标运算符函数operator[]"<<endl; if(i<0 || i>=n){ cout<<"超出了数组的下标:第"<<i<<endl; exit(EXIT_FAILURE); } return a[i]; } template<class T, int n> void people<T, n>::show() { for(int i=0; i<n; i++){ cout<<"a["<<i<<"]:"<<a[i]<<"\t"; } cout<<endl; } int main() { people<people<int,2>,3>two; int obj = 1; for(int i=0; i<4; i++) { int sum=1; for(int j=0; j<2; j++){ cout<<"\ntwo["<<i<<"]["<<j<<"]:"<<two[i][j]<<"\n"; cout<<"第"<<sum++<<"个无素输出完毕\n"; } cout<<"第"<<obj++<<"个对像中的数组无素输出完毕"<<endl; } return 0; }*/