正在加载图片...
6.2.2函数模板的异常处理 虽然函数模板中的模板形参T可以实例化为各种类型,但实例化T的 各模板实参之间必须保持完全一致的类型,否则会发生错误。请 看下面的例子 Template<class T> T max(Tx,Ty) i return(x>y)?x y; y void fun(int i, char c) i max i, i) ∥l确,调用max( (nt, int max( c, c); ∥l确,调用max(char,char) max i, c) ∥错误 max c, i) ∥错误 这里出现错误的原因是,如对语句max(i,c) 编译器将先按变量i将T解释为int类型,此后出现的模板实参c不能 解释为int类型时,便发生错误。解决这个问题有以下两种方法 (1)采用强制类型转换,如将调用语句 max(c);改写成max(nt(c6.2.2 函数模板的异常处理 虽然函数模板中的模板形参T可以实例化为各种类型,但实例化T的 各模板实参之间必须保持完全一致的类型,否则会发生错误。请 看下面的例子。 Template<class T> T max(T x,T y) { return(x>y)?x:y; } void fun(int i,char c) { max(i,i); //正确,调用max(int,int) max(c,c); //正确,调用max(char,char) max(i,c); //错误 max(c,i); //错误 } 这里出现错误的原因是,如对语句 max(i,c); 编译器将先按变量i将T解释为int类型,此后出现的模板实参c不能 解释为int类型时,便发生错误。解决这个问题有以下两种方法: ⑴采用强制类型转换,如将调用语句 max(i,c); 改写成 max(i,int(c)); 9
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有