C++ template

在模板定义语法中关键字class与typename的作用完全一样。

什么是类模板

 如果一个类中数据成员的数据类型不能确定,或者是某个成员函数的参数或返回值的类型不能确定,就必须将此类声明为模板

类模板定义

Step1: 声明模板

三种声明形式:
1。基本模板类
template<class T1,class T2>
2。带默认类型形参
template<typename T3, typename T4=int>
3。带非类型模板参数
template<class T5,int a> 

Step2: 定义类

template<class T>
class Test{
private:
    T n;
    const T i;
    static T cnt;
public:
    Test():i(0){}
    Test(T k);
    ~Test(){}
    void print();
    T operator+(T x);
};

Step3: 在类定义体外定义成员函数时,若此成员函数中有模板参数存在,则还需在函数体外进行模板声明,并在函数名前的类名后缀加上“<T>”

template<class T>
Test<T>::Test(T k):i(k){n=k;cnt++;}

template<class T>
T Test<T>::operator+(T x){
       return n + x; 
}

Step4:  在类定义体外初始化const成员和static成员变量,需再对模板进行声明

template<class T>
int Test<T>::cnt=0;

什么是模板类

模板类是类模板实例化后的一个产物。

什么是函数模板

template<typename(或class) T>
T fuc(T x, T y)
{
    T x;
    //……
}

什么是模板函数

模板函数的生成就是将函数模板的类型形参实例化的过程

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。