//第二十三模板 8数组模板
/*#include <iostream>
using namespace std;
template<class T, int n>
class people
{
public:
people();
people(const T&t);
T&operator[](int i);
//注意:
//这两行定义的带一个参数的构造数和下标运算符数operator[],它们操作的对像不是下面定义的数组成员a[]
//而是people类的对像
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; //如果这里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<double, 4>one;
one.show();
people<double, 4>*p = new people<double, 4>[4];
//创建了四个对像,这四个对像按顺序排列在一个数组中,我们把这个数组叫对像数组,这个对像数组的地址返回给了people类的指针p来保存,这本来是一个很简单的在堆中创建的对像数组的过程,但是由于people类是个模板类,因此它的创建形式与普通类有些不同
for(int i=0; i<9; i++)
{
p[i] =one[i];
p[i].show();
}
return 0;
}*/