C++ 模板学习总结(三)模板参数的三种形式

之前的一篇文章中介绍了特化和实例化的知识,那么本次想给大家介绍一下模板的三种参数。

首先呢,要说的是什么是模板参数,那么如果使用过模板的同学会知道在定义一个模板的时候需要在定义上面写上一行诸如template这样的代码,那么这行中定义的这个T就是一个模板参数。对于一个模板而言,无论是函数模板还是类模板,都需要对其指定模板参数,可以有多个,但至少要有一个,如果一个都没有那还叫什么模板,当用户在使用这个模板的时候需要指定所有的模板参数以生成一个可用的特化。注意,存在的每一个模板参数在正式使用的时候都必须是被指定的,虽然指定的方法可以不是显式指定,但必须可以推导出来,换句话说编译器必须要能知道每个参数是什么才行。那么对于类模板而言,除了显示指定所有模板参数之外,还可能是该参数有默认值,而对于函数模板显然要复杂的多,模板的参数可以通过函数参数推导而来,这部分被称为模板实参演绎,也是一个非常复杂的议题,我们留之后议。

首先要了解的是虽然我们最常见的模板参数都是类型参数,例如:

templateclass Test{};

在这个简单的示例中,T就是一个类型参数,它的意思是说T表示了一个类型,那么在Test这个class中就可以按照使用一个类型的方式来使用T,比如可以使用T来

比丘资源网 » C++ 模板学习总结(三)模板参数的三种形式

发表回复

提供最优质的资源集合

立即查看 了解详情