正在加载图片...
(2)用非模板函数重载函数模板,这种重载有两种表述方式:10 ①只声明一个非模板函数的原型,而不给出函数体,它的函数体是 借用函数模板的函数体。当执行此重载版本时会自动调用函数模 板的函数体。 template<class T> T max(Tx,Ty i return(>y)? x: y;] int max( int, int);∥非模板函数的原型 void fun(int i, char c) i max i,i); ∥l确,调用max(int,int max(c,c);∥正确,调用max(char,char) max(,c);∥正确,调用max( int, int),它支持数据间的隐式转换 max(c,i);∥正确,调用max( (nt, int),它支持数据间的隐式转换 ②定义一个完整的非模板函数,此方法定义的重载函数,所带参数 的类型可以随意,就像一般的重载函数一样定义。例如: char *max( char *x, chen y) I return(strcmp(x, y>0)?x: y:))⑵用非模板函数重载函数模板,这种重载有两种表述方式: ①只声明一个非模板函数的原型,而不给出函数体,它的函数体是 借用函数模板的函数体。当执行此重载版本时会自动调用函数模 板的函数体。 template<class T> T max(T x,T y) { return(x>y)? x:y; } int max (int,int); //非模板函数的原型 void fun(int i,char c) { max(i,i); //正确,调用max(int,int) max(c,c); //正确,调用max(char,char) max(i,c); //正确,调用max(int,int),它支持数据间的隐式转换 max(c,i); //正确,调用max(int,int),它支持数据间的隐式转换 } ②定义一个完整的非模板函数,此方法定义的重载函数,所带参数 的类型可以随意,就像一般的重载函数一样定义。例如: char *max( char *x, chen *y) { return(strcmp(x,y>0)?x:y;) } 10
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有