模板第7章
1 第7章 模板
7.1函数模板模板:函数和类模板。函数模板简化重载。编译器遇到函数调用时,将根据实参类型和函数模板一起产生函数代码函数模板并不是真正意义上的函数,定义形式template<类型参数表>返回值类型函数名(形式参数表)/函数体
2 7.1 函数模板 • 模板:函数和类模板。 • 函数模板简化重载。编译器遇到函数调用时,将 根据实参类型和函数模板一起产生函数代码。 • 函数模板并不是真正意义上的函数,定义形式: template < 类型参数表 > 返回值类型 函数名 ( 形式参数表 ) { // 函数体 }
从函数重载到函数模板7.1.1,函数重载是函数名相同,参数一定不完全相同,采用函数重载,要对每个函数分别写出相应的代码,例如:
3 7.1.1 从函数重载到函数模板 • 函数重载是函数名相同,参数一定不完全相同,采 用函数重载,要对每个函数分别写出相应的代码。 例如:
int square(int number)return number * number ;float square(float number)return number * number ;采用函数模板实现square:template < class T>T square(T number)return number * number ;
int square ( int number ) { return number * number ; } float square ( float number ) { return number * number ; } 采用函数模板实现square: template < class T > T square ( T number ) { return number * number ; }
【例7.1】函数模板应用举例。template <class T>T square(Tnumber)return number * number ;int main ()int userlnt:float userFloat ;cin>> userlnt >> userFloat cout<<"它们的平方分别是:cout<<square(userlnt)<< square(userFloat);return 0;7-1.cpp
【例7.1】函数模板应用举例。 template < class T > T square ( T number ) { return number * number ; } int main ( ) { int userInt ; float userFloat ; cin >> userInt >> userFloat ; cout << "它们的平方分别是:" ; cout << square ( userInt ) << square ( userFloat ); return 0; } 7-1.cpp