龙空技术网

C++|重载函数模板

小智雅汇 168

前言:

眼前小伙伴们对“函数重载和函数模板”都比较珍视,同学们都想要学习一些“函数重载和函数模板”的相关文章。那么小编同时在网摘上网罗了一些对于“函数重载和函数模板””的相关内容,希望各位老铁们能喜欢,小伙伴们一起来学习一下吧!

模板实现了数据类型的泛化,但模板类型并不能提供类型的隐式转换:

T max(T a,T b){     return  a > b ? a : b ; }void  f ( int  i , char  c ){      max ( i , i ) ;      // ok    max ( c ,  c ) ;    // ok    max ( i ,  c ) ;    // error,无法匹配    max ( c ,  i ) ;    // error}

函数模板也可以重载:

#include <iostream>using namespace std;template <typename T>                     // 函数模板T max(T a,T b){     return  a > b ? a : b ; }int Max( const int a , const char b )     // 用普通函数重载函数模板{     return a>b ? a : b ; }template <typename T>                      // 重载函数模板T Max( const T a, const T b , const T c){     T t = Max(a, b) ;        return Max ( t, c ) ;  }int main ( ){     cout << " Max( 3, 'a' ) is " << Max( 3, 'a' ) << endl ;       // 由系统提供隐式转换    cout << " Max(9.3, 0.5) is " << Max(9.3, 0.5) << endl ;   // 编译器匹配函数模板T max(T a,T b)    cout << " Max(9, 5, 23) is " << Max(9, 5, 23) << endl ;   // 编译器匹配函数模板T Max( const T a, const T b , const T c)    getchar();}/* Max( 3, 'a' ) is 97 Max(9.3, 0.5) is 9 Max(9, 5, 23) is 23*/

特定情况下,泛化的类型并不能适应特定的数据类型,所以还需要实现特定类型的特化。

-End-

标签: #函数重载和函数模板 #函数重载怎么写