前言:
眼前小伙伴们对“函数重载和函数模板”都比较珍视,同学们都想要学习一些“函数重载和函数模板”的相关文章。那么小编同时在网摘上网罗了一些对于“函数重载和函数模板””的相关内容,希望各位老铁们能喜欢,小伙伴们一起来学习一下吧!模板实现了数据类型的泛化,但模板类型并不能提供类型的隐式转换:
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-
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。