C++函数模版和类模版基础

来源:互联网 发布:药源网手机数据库 编辑:程序博客网 时间:2024/05/16 16:04

     模版把函数或类要处理的数据类型参数化,表现为参数的多态性。模版用于表达逻辑结构相同,且具体数据元素类型不同的数据对象的通用行为,从而使得程序可以从逻辑功能上抽象,把被处理的对象(数据)类型作为参数传递。

     函数模版参考代码:

   

#include <iostream>using namespace std;template <class T>    //<>中也可以写成<typename T>,效果是一样的。T _min(T x,T y)   //注意所起的函数名不能和原有库中的函数名冲突,否则编译报错。{  if(x<y){  return x;  }else{  return y;  }}int main(){   int n1=2,n2=10;   double d1=1.5,d2=5.6;   cout << "较小整数:"<< _min(n1,n2) << endl;   cout << "较小实数:"<< _min(d1,d2) << endl;   return 0;}

运行结果截图:

--------------------------------------------------------------------------------------------------------------------------------------

类模版参考代码:

#include <iostream>using namespace std;template <class T>class Array{  int size;  T *aptr;   //T为类型参数public:  Array(int slots=1)  {    size=slots;    aptr=new T[slots];    //为动态数组分配内存空间  }  void fill_Array();  void disp_Array();  ~Array()  {     delete [] aptr;  }}; template <class T>void Array<T>::fill_Array(){  cout << "(输入" << size << "个数据)" << endl;  for ( int i=0;i<size;i++)  {    cout << " 第" << i+1 << "个数据:";    cin >> aptr[i];  }}template <class T>void Array<T>::disp_Array(){  for (int i=0;i<size;i++)  {    cout << aptr[i] << " ";  }  cout << endl;}int main(){   Array<char> ac(5);    //Array<char>为模板类,ac(5)定义模板类的对象   cout << "填充一个字符数组";   ac.fill_Array();   cout << "数组的内容是:";   ac.disp_Array();   Array<double> ad(3);    //Array<double>为模板类,ad(3)定义模板类的对象   cout << "填充一个双精度数组:" << endl;   ad.fill_Array();   cout << "数组的内容是:";   ad.disp_Array();}

运行结果截图:

以上代码在G++中编译运行成功。

(-----------完-----------)

原创粉丝点击