|
|
|
|
|
|
|
|
|
|
|
调用函数时,经常会遇到函数本身功能符合调用要求,但是函数形式参数类型和实际参数类型并不相符的情况,这时不得不考虑重载函数或者进行类型转换。模板技术的出现使得程序设计者摆脱了数据类型的束缚,而只关注函数功能的实现。C++语言常用的模板有函数模板和类模板。
|
|
|
|
|
|
|
|
其中,template为关键字,参数类型列表中的参数类型用class加上字符串来表示。在后面的形式参数列表和函数功能实现语句中,可以把这段字符串作为一个具体的数据类型使用。
|
|
|
|
下面以"返回两参数中较大者的函数max(x,y)"为例说明函数模板。x和y为具有可比较次序的任何类型。如果不用模板,就需要max()的许多重载版本,在这些重载版本中,每个版本的代码是相同的,但是形参代表的数据类型却不相同。例如:
|
|
|
|
|
|
如果使用模版,数据类型本身就是一个参数,例如,max函数的模板可以定义为:
|
|
|
|
|
|
template表示声明一个模板,数据类型由模板参数给出。max不是一个完整的函数,称为函数模板。
|
|
|