首页 理论教育声明C++函数模板-《C++程序设计基础教程》

声明C++函数模板-《C++程序设计基础教程》

【摘要】:声明函数模板的一般格式如下:template<模板参数表>函数返回值类型函数模板名(形参表)函数模板定义由关键字template开头,表示声明一个模板。模板参数表写在尖括号<>中,参数一般由关键字class或typename后加一个标识符构成。Class和typename的意义相同,表示后面的标识符是一个参数类型,代表一个潜在的标准类型或用户定义的类型。例如,定义max函数模板求两个数中的较大者。如下面的声明是错误的:可以看出,用函数模板比函数重载更方便,程序更简洁。

声明函数模板的一般格式如下:

template<模板参数表>

函数返回值类型函数模板名(形参表)

函数模板定义由关键字template开头,表示声明一个模板。模板参数表写在尖括号<>中,参数一般由关键字class或typename后加一个标识符构成。Class和typename的意义相同,表示后面的标识符是一个参数类型,代表一个潜在的标准类型或用户定义的类型。如果有多个类型参数,则每个参数都要用class或typename引导,且参数之间用逗号隔开。在函数模板中,可以用模板参数表中的类型参数名表示返回值、数据形参和局部变量的类型。例如,定义max函数模板求两个数中的较大者。这里,两个数的类型没有固定,但显然为同一类型,故模板中用一个类型参数即可。函数模板定义如下:

函数模板的类型参数T泛指类型,如int、double等。T不仅可以用来说明形参a、b的类型,而且在函数模板定义体中可用T定义变量,例如:

T x,y,z;

函数模板的模板参数表中也可以包含非类型参数,例如:(www.chuimin.cn)

template<class T,int size>

T f1(T a)

函数模板f1除了带有参数类型T外,还带有一个int型参数size。

还需注意的是,在template语句与函数模板声明之间不允许有别的语句。如下面的声明是错误的:

可以看出,用函数模板比函数重载更方便,程序更简洁。但应注意函数模板只适用于函数的参数个数相同而类型不同且函数体相同的情况,如果参数的个数不同,则不能用函数模板。