首页 > 代码库 > 类模板

类模板

为了说明类模板,先看一个类模板的例子

#include <iostream>

using namespace std;

template<class T>

class Compare//定义一个比较类(用于比较两个数的大小)
{
public:

    //使用初始化表的形式初始化数据成员
    Compare(T x, T y):a(x),b(y){}
    
    T max(void)//比较两个数据,并且返回最大值
    {
        return a > b ? a : b;
    }

    T min(void)//比较两个数据,并且返回最小值
    {
        return a < b ? a : b;
    }

    //显示比较的数据
    void show( );     
 
private://两个比较的数
    T a;
    T b;
};

//显示比较的数据
template<class T>  
void Compare<T>::show( )     
{  
    cout<<a<<" "<<b;  
}  



void main()
{
    Compare<int>   cmp1(1,2);
    Compare<float> cmp2(3.55,2.7);
    Compare<char>  cmp3('A','z');

    cmp1.show();
    cout<<" 中最大的数是:"<<cmp1.max()<<endl;
    
   cmp1.show();
   cout<<" 中最小的数是:"<<cmp1.min()<<endl;
    
    cmp2.show();
    cout<<" 中最大的数是:"<<cmp2.max()<<endl;
    
   cmp2.show();
   cout<<" 中最小的数是:"<<cmp2.min()<<endl;

    cmp3.show();
    cout<<" 中最大的字符是:"<<cmp3.max()<<endl;
    
   cmp3.show();
   cout<<" 中最小的字符是:"<<cmp3.min()<<endl;
   
   system("pause");
}

执行结果:


上面的程序是实现比较两个数据的大小


代码还可以写成下面的形式

#include <iostream>

using namespace std;

template<class T>

class Compare//定义一个比较类(用于比较两个数的大小)
{
public:

    //使用初始化表的形式初始化数据成员
    Compare(T x, T y);
    T max(void);//比较两个数据,并且返回最大值
    T min(void);//比较两个数据,并且返回最小值
    void show( );//显示数据     
 
private://两个比较的数
    T a;
    T b;
};

//使用初始化表的形式初始化数据成员
template <class T>
Compare<T>::Compare(T x, T y)
{
    a = x;
    b = y;
}

template <class T>
T Compare<T>::max(void)//比较两个数据,并且返回最大值
{
    return a > b ? a : b;
}

template <class T>
T Compare<T>::min(void)//比较两个数据,并且返回最小值
{
    return a < b ? a : b;
}
//显示比较的数据
template<class T>  
void Compare<T>::show( )     
{  
    cout<<a<<" "<<b;  
}  



void main()
{
    Compare<int>   cmp1(1,2);
    Compare<float> cmp2(3.55,2.7);
    Compare<char>  cmp3('A','z');

    cmp1.show();
    cout<<" 中最大的数是:"<<cmp1.max()<<endl;
    
   cmp1.show();
   cout<<" 中最小的数是:"<<cmp1.min()<<endl;
    
    cmp2.show();
    cout<<" 中最大的数是:"<<cmp2.max()<<endl;
    
   cmp2.show();
   cout<<" 中最小的数是:"<<cmp2.min()<<endl;

    cmp3.show();
    cout<<" 中最大的字符是:"<<cmp3.max()<<endl;
    
   cmp3.show();
   cout<<" 中最小的字符是:"<<cmp3.min()<<endl;
   
   system("pause");
}

执行结果和上面的代码一样


类模板的形式:template<class  类型名>

:template<class T>  T表示数据类型名


类模板中的成员函数在函数外部定义的形式:

template<class  类型名>

类名<类型名> ::成员函数名


:

template<class T>

Complare<T>::show()