<P>模板我们见过不少,就象编写网页,设计了一个页面模板后,我们就可以用它来编写同样风格的页面,只要把模板中相应可编辑区的文字更新一下就可以了,这就减少了许多的重复工作量。</P>* l: q- }& z: K' N6 B) z
<P>而C++中的模板也正是这样,它可以使我们编写程序时减少许多重复的工作量,<FONT color=#ff0000>C++支持两种模板</FONT>,<FONT color=#0000ff>一种是函数模板</FONT>,<FONT color=#0000ff>一种是类模板</FONT>。模板由程序员定义,是供C++编译器来使用的,由它根据实际的类型参数来替代模板中的相应类型。</P>0 P _9 ?" B' v8 N. y0 L a' v
<P>要识记的部分有:</P>6 |1 s; p/ t( C8 _" a& D- ^
<P><FONT color=#0000ff>模板</FONT>可分为哪<FONT color=#0000ff>两种类型</FONT>,一是<FONT color=#0000ff>有约束的模板</FONT>,二是<FONT color=#0000ff>无约束的模板</FONT>。对于函数模板而言,对类型没有任何要求,只需是同一类型的变量就可以的模板就是无约束的函数模板。而在对处理的数据有要求的函数模板就是有约束的函数模板,比如要求相应的数据是可序列化的(比较大小).</P>2 H: ?9 s1 z/ C X3 a% P
<P><FONT color=#0000ff>定义模板的方法</FONT>:函数模板的格式为:</P>/ V' m# Z6 h& v8 d1 t
<P>template <class T></P>
# ?! z* _# h% H( b. o8 P" G<P>T fun (T a, T b ...)</P>
% e. K1 D8 l! c, G7 v, p9 i3 v<P>{ //...}</P>. [$ g- v8 T, B& k5 Y; Z$ a6 m
<P>其中的class与类没有任何关系,其意可理解为"用户定义或固有的类型:"(当然这个类型也可以是一个类),注意是用尖括号括起来的。这个形式基本上就是把一般函数的类型标识符改成 class后面的标识符T,然后在这个函数前面加一个模板的标识符,这就告诉编译器,以下的函数是个函数模板 。到时候要用相应的类型来替换这个T。这和我们创建文档模板也差不多。</P> |