模板参数

来源:互联网 发布:青少儿编程 编辑:程序博客网 时间:2024/04/30 14:21

                  模板参数可以是某些类型或者非类型。类型参数需用使用typename或class关键字才指定。

                  如下:

                  template<typename T1,typename T2,...> class className{...}

                  template<class T1,  class T2,...> class className{...}

                  非类型的参数就是通常的参数定义,表示模板在实例化时是用的常量。

                 还是以数组模板类为例子:

                

#include <iostream>using namespace std;template <typename T = int, int len = 10>class Array{public:    Array();    ~Array();    int length() const {        return m_length;    }    T& get(int index) const;    T operator[](int index);private:    T *p_array;    int m_length;};template <typename T,int len>Array<T,len>::Array():    p_array(new T[len]),    m_length(len){}template <typename T,int len>Array<T,len>::~Array(){    delete p_array;}template <typename T,int len>T& Array<T,len>::get(int index) const{    if (index > m_length -1) {        throw "ERROR:index is out!";    } else {        return p_array[index];    }}template <typename T,int len>T Array<T,len>::operator[](int index){    return p_array[index];}int main(){    Array<> intArr;    cout << "the length of int array is " << intArr.length() << '\n';    try {        intArr.get(11);    }catch(const char *ex) {        cout << ex << '\n';    }    Array<char> charArr;    Array<char,20> char20Arr;    cout << "the length of char20 array is " << char20Arr.length() << '\n';    return 0;}


原创粉丝点击