C++ Template学习笔记之函数模板(6)——模板显式特化

王朝c/c++·作者佚名  2006-01-27
窄屏简体版  字體: |||超大  

我们并不总是能够写出对所有可能被实例化的类型都是最合适的函数模板。在某些情况下,我们可能想利用类型的某些特性,来编写一些比模板实例化的函数更高效的函数。在有些时候,一般性的模板定义对于某种类型来说并不适用,这时我们必须为函数模板实例化提供特化的定义。

在模板显式特化定义(explicit specialization definition)中,先是关键字template和一对尖括号<>,然后是函数模板特化的定义。该定义指出了模板名、被用来特化模板的模板实参,以及函数参数表和函数体。如:

// max.h

template <class Type>

Type Max(Type t1,Type t2)

{

return (t1>t2 ? t1 : t2);

}

// const char*显式特化:覆盖了来自通用模板定义的实例

typedef const char *PCC;

template<> PCC Max< PCC >( PCC s1, PCC s2 )

{

return (strcmp(s1,s2)>0 ? s1 :s2);

}

// user.c

int main()

{

// 调用实例:int Max< int >( int, int );

int i = Max( 10, 5 );

// 调用显式特化:const char* Max< const char* >( const char*, const char* );

const char *p = Max( "hello", "world" );

cout<<"i: "<<i<<" "<<"p: "<<p<<endl;

return 0;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航