您的位置:首页 > 其它

STL_2: 模板_2_函数模板

2015-12-16 00:14 369 查看
tempalte<typename T> const T& min(const T& a,const T& b)
{return (a<b)? a:b;}

int z=min<int>(i,j);


min(i,j)—-用int特化

函数模板的类型推断

tempalte<typename T,typename U> const T& min(const T& a,const U& b)
{return (a<b)? a:b;}
int z=min<int.double>(i,j);


函数模板的重载

template<typename T> const T& min(const T& a,const T& b)  //min(1,2)--自动类型推断
{return (a<b)? a:b;}

const char* min(const char *a,const char* b)
{return strcmp(a,b)<0 ? a:b;}

double min(double x,doule y)  //min(1.0,2.0)
{return (x<y)?x:y}


生成的函数模板地址作为参数

template<typename T> void f(T*) {}
void h(void (*pf)(int *)) {}
template <typename T>  void g(void (*pf)(T*)) {}

int main()
{
h(&f<int>);
f(&f);  //类型推导
g<int>(&f<int>);
g(&f<int>);
g<int>(&f);
}


函数模板的半有序

//优先级顺序从上到下变低
template<class T> void f(T);
template<class T> void f(T*);
template<class T> void f(const T*);


模板特化

显示特化

tempalte<class T>
const T& min(const T &a,const T &b)
{.....}
----
//特化(const char*)
tempalte<>
const char* const& min<const char*> (const char* const &a,const char* const &b)
{.....}

min(s1,s2);
min<>(s1,s2);


<\lt const char*>-特化类型;用const char* 代替 T

半特化

类模板—半特化

代码的膨胀

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: