C++ Primer笔记 模板

1 函数模板 
template <typename T>
T compare(const T & v1,const T &v2)
{
return ..
}


编译器承担了为每种类型编写函数的单调工作.


inline 
template<typename T> inline T min(const T&,const T&)


2 类模板 
template<class T>
class Q{
 T fun();
}


3. 形参屏蔽外部变量
   模板形参不能在内部重新定义
   模板的声明和定义名字可以不相同


4
 template <clas Parm,class U>
  Parm fcn(Parm& array,U value)
 {
typename Parm::size_type *p;//不知道size_type是否为类型的时候最好加上typename
  }


5 非类型模板形参
 template<class T,size_t N>
 void array(T (&parm)[N]){}
 
 调用:
 int x[42];
array_init(x);// = array_init(int (&)[42]);


6 形参为引用时,数组不能转换为指针


7 显示指定实参


 template<class T1,class T2, classs T3>
 T3 func(T2,T1)
 long func<long ,int ,long >(int,long);


8 类外定义模板


 template <class Type> void Queue<Type>::destroy(){}


9 类模板中的友元函数声明
 template<class Type> class Bar{
   template<class T> friend class FooBar;
   template<class T> friend void fun();
}


10 模板static 不同类型 不同的copy内存

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。