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

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

     函数模版参考代码:

   

#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++中编译运行成功。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值