八:模板

8.1:函数模板

   函数模板定义:

   template < typename 类型参数>

   返回类型  函数名(模板参数表)

   {

   函数体;

   }

   

   template <typename T>

   T max( T a , T b )

   {

   return (a>b)?a:b;

   }

   有两个参数类型的函数模板

 

#include<iostream>
using namespace std;

template <typename T>
T MAX( T a , T b )
{
    return (a>b)?a:b;
}

template <typename para1,typename para2>
void two_par( para1 x , para2 y )
{
    cout<<x<<" "<<y<<endl;
}

int main(void)
{
   double r = 1.5 , s = 2.5;
   cout<<MAX(r,s)<<endl;
   char c = 'A';
   two_par( c ,s );
   return 0;
}

 

8.2:类模板

   

   template<typename 类型参数>

   class 类名{

   类成员声明

   }

   

   //定义如下

   

   template <class 类型参数>

   class 类名{

   类成员声明;

   }

   

   类模板的使用示例:

 

#include<iostream>
using namespace std;

template <class T>
class Add_3{
   public:
   Add_3( T a , T b ,T c );
   T sum();
   private:
   T x ,y ,z;
};

template<typename T>  //模板声明
Add_3<T>::Add_3( T a , T b ,T c  )  //类外定义构造函数
{
   x = a;
   y = b;
   z = c;
}
template<typename T>
T Add_3<T>::sum()
{
    return x+y+z;
}
int main(void)
{
   Add_3<int> sum3_1(3,5,7);
   Add_3<double> sum3_2(3.5,5.8,7.6);
   cout<<" int stck "<< sum3_1.sum()<<endl;
   cout<<" double stck "<< sum3_2.sum()<<endl;
   return 0;
}   

 

posted @ 2020-05-05 17:52  INSTANCE_SELF  阅读(137)  评论(0编辑  收藏  举报