模板

2020-02-02  本文已影响0人  Lif68

类模板:

可以用typename或者class去定义,但class容易被误认为是一个类,这里的参数一般都是全部大写

template<typename T,int SIZE/*非类型参数*/>

bool compare(T a,T b)

{

    T elems[SIZE];

    return a>b;

}

其中 int SIZE的作用是,在数组初始化的时候,需要定义数组长度,而这个非类型参数就是作用在这里

使用时初始化T参数类型实例化模板,例如

int a=1;int b=2;

compare<int,10>(a,b);

当然也可以不给尖括号输入参数类型,这叫做隐式实例化

函数模板:

template<typename T,int VAL>

T addValue(const T& x)

{

    return x+VAL;

}

所有经过该函数模板的值都被增加了一个VAL大小的整形(不考虑是否能够加上去)

函数的返回类型是被调用时被定义的

限制:

非类型 模板参数是有限制的,他可以是int enum类型,指针,或者通过hpp指向外部链接对象的指针

但不能是浮点类型,类对象类型

上一篇 下一篇

猜你喜欢

热点阅读