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; }