<P>模板我们见过不少,就象编写网页,设计了一个页面模板后,我们就可以用它来编写同样风格的页面,只要把模板中相应可编辑区的文字更新一下就可以了,这就减少了许多的重复工作量。</P>& D8 _. Z2 n+ O3 t' S; z4 s
<P>而C++中的模板也正是这样,它可以使我们编写程序时减少许多重复的工作量,<FONT color=#ff0000>C++支持两种模板</FONT>,<FONT color=#0000ff>一种是函数模板</FONT>,<FONT color=#0000ff>一种是类模板</FONT>。模板由程序员定义,是供C++编译器来使用的,由它根据实际的类型参数来替代模板中的相应类型。</P>
4 D2 ~5 v J7 \+ B/ R |<P>要识记的部分有:</P>
9 \0 ^, g& ^. J<P><FONT color=#0000ff>模板</FONT>可分为哪<FONT color=#0000ff>两种类型</FONT>,一是<FONT color=#0000ff>有约束的模板</FONT>,二是<FONT color=#0000ff>无约束的模板</FONT>。对于函数模板而言,对类型没有任何要求,只需是同一类型的变量就可以的模板就是无约束的函数模板。而在对处理的数据有要求的函数模板就是有约束的函数模板,比如要求相应的数据是可序列化的(比较大小).</P>7 G) U T% A$ R
<P><FONT color=#0000ff>定义模板的方法</FONT>:函数模板的格式为:</P>
) x3 _3 j v0 M2 |- a1 S<P>template <class T></P>: k; v5 E0 U2 }: c: ]! A2 v
<P>T fun (T a, T b ...)</P>! j" m9 P2 c. m* Y- b1 \
<P>{ //...}</P>! h9 i9 Q- I9 q t2 \- b! |, z9 M
<P>其中的class与类没有任何关系,其意可理解为"用户定义或固有的类型:"(当然这个类型也可以是一个类),注意是用尖括号括起来的。这个形式基本上就是把一般函数的类型标识符改成 class后面的标识符T,然后在这个函数前面加一个模板的标识符,这就告诉编译器,以下的函数是个函数模板 。到时候要用相应的类型来替换这个T。这和我们创建文档模板也差不多。</P> |