STL_2: 模板_2_函数模板

来源:互联网 发布:js字符串除法 编辑:程序博客网 时间:2024/04/27 10:15
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);
  • <const char*>-特化类型;用const char* 代替 T

半特化

  • 类模板—半特化

代码的膨胀

0 0
原创粉丝点击