<P>模板我们见过不少,就象编写网页,设计了一个页面模板后,我们就可以用它来编写同样风格的页面,只要把模板中相应可编辑区的文字更新一下就可以了,这就减少了许多的重复工作量。</P>
9 v8 p" C7 ~/ {3 H) p" e# d/ i- Q<P>而C++中的模板也正是这样,它可以使我们编写程序时减少许多重复的工作量,<FONT color=#ff0000>C++支持两种模板</FONT>,<FONT color=#0000ff>一种是函数模板</FONT>,<FONT color=#0000ff>一种是类模板</FONT>。模板由程序员定义,是供C++编译器来使用的,由它根据实际的类型参数来替代模板中的相应类型。</P>
& d* M1 y, {4 K l" q<P>要识记的部分有:</P>) ]+ M: n+ d! G% I0 w; F5 g
<P><FONT color=#0000ff>模板</FONT>可分为哪<FONT color=#0000ff>两种类型</FONT>,一是<FONT color=#0000ff>有约束的模板</FONT>,二是<FONT color=#0000ff>无约束的模板</FONT>。对于函数模板而言,对类型没有任何要求,只需是同一类型的变量就可以的模板就是无约束的函数模板。而在对处理的数据有要求的函数模板就是有约束的函数模板,比如要求相应的数据是可序列化的(比较大小).</P>
6 J$ W4 \9 i' @' v<P><FONT color=#0000ff>定义模板的方法</FONT>:函数模板的格式为:</P>
" z- A8 U- U6 ~<P>template <class T></P>% N2 d) B# g1 m. F/ l% J
<P>T fun (T a, T b ...)</P>; H) y/ B+ e- s
<P>{ //...}</P>
: s) Y+ B! F# \# l" ^( T5 G0 L<P>其中的class与类没有任何关系,其意可理解为"用户定义或固有的类型:"(当然这个类型也可以是一个类),注意是用尖括号括起来的。这个形式基本上就是把一般函数的类型标识符改成 class后面的标识符T,然后在这个函数前面加一个模板的标识符,这就告诉编译器,以下的函数是个函数模板 。到时候要用相应的类型来替换这个T。这和我们创建文档模板也差不多。</P> |