<P>模板我们见过不少,就象编写网页,设计了一个页面模板后,我们就可以用它来编写同样风格的页面,只要把模板中相应可编辑区的文字更新一下就可以了,这就减少了许多的重复工作量。</P>) n) l* F$ w9 P( [3 `- n
<P>而C++中的模板也正是这样,它可以使我们编写程序时减少许多重复的工作量,<FONT color=#ff0000>C++支持两种模板</FONT>,<FONT color=#0000ff>一种是函数模板</FONT>,<FONT color=#0000ff>一种是类模板</FONT>。模板由程序员定义,是供C++编译器来使用的,由它根据实际的类型参数来替代模板中的相应类型。</P>
7 M3 x4 u- w' @8 v' O5 w, D<P>要识记的部分有:</P>
3 W8 k: t6 D2 v% O9 x3 w<P><FONT color=#0000ff>模板</FONT>可分为哪<FONT color=#0000ff>两种类型</FONT>,一是<FONT color=#0000ff>有约束的模板</FONT>,二是<FONT color=#0000ff>无约束的模板</FONT>。对于函数模板而言,对类型没有任何要求,只需是同一类型的变量就可以的模板就是无约束的函数模板。而在对处理的数据有要求的函数模板就是有约束的函数模板,比如要求相应的数据是可序列化的(比较大小).</P> H2 ^# |* R! W7 x
<P><FONT color=#0000ff>定义模板的方法</FONT>:函数模板的格式为:</P>
, f3 @- X. f2 d, F<P>template <class T></P>
. Y% ]- X) |2 t- u( k5 h! n+ c<P>T fun (T a, T b ...)</P>/ a$ Z5 e! e* y' T: i& s, ? e
<P>{ //...}</P>1 ^2 s1 ]/ ~3 X' T( h
<P>其中的class与类没有任何关系,其意可理解为"用户定义或固有的类型:"(当然这个类型也可以是一个类),注意是用尖括号括起来的。这个形式基本上就是把一般函数的类型标识符改成 class后面的标识符T,然后在这个函数前面加一个模板的标识符,这就告诉编译器,以下的函数是个函数模板 。到时候要用相应的类型来替换这个T。这和我们创建文档模板也差不多。</P> |