贴一段自己理解的模板模板参数的实例
#include<bits/stdc++.h>
using namespace std;
template<class T>
class Rectangle
{
public:
void Set()
{
cout<<"length:"<<endl;
cin>>length;
cout<<"width:"<<endl;
cin>>width;
}
T Get_area()
{
return length*width;
}
private:
T length;
T width;
};
template<class T>
class Parallelogram
{
public:
void Set()
{
cout<<"length:"<<endl;
cin>>length;
cout<<"height:"<<endl;
cin>>height;
}
T Get_area()
{
return length*height;
}
private:
T length;
T height;
};
template<class T,template <class T>class figure>
class Figure_array
{
private:
figure<T>* head;
int cnt;
public:
Figure_array(int n=0)
{
cnt=n;
head=new figure<T>[n];
for(int i=0;i<n;i++)
{
head[i].Set();
}
}
void Print()
{
for(int i=0;i<cnt;i++)
{
cout<<head[i].Get_area()<<" ";
}
cout<<endl;
}
};
/*template<class T,class C>
class Figure_array
{
private:
C* head;
int cnt;
public:
Figure_array(int n=0)
{
cnt=n;
head=new C[n];
for(int i=0;i<n;i++)
{
head[i].Set();
}
}
void Print()
{
for(int i=0;i<cnt;i++)
{
cout<<head[i].Get_area()<<" ";
}
cout<<endl;
}
};
*/
int main()
{
Figure_array<int,Rectangle> a(3);
a.Print();
cout<<"-------------------------------"<<endl;
Figure_array<double,Parallelogram> b(3);
b.Print();
}
/*int main()
{
Figure_array<int,Rectangle<int> > a(3);
a.Print();
cout<<"-------------------------------"<<endl;
Figure_array<double,Parallelogram<double> > b(3);
b.Print();
}*/