<P>模板我們見過不少,就象編寫網頁,設計了一個頁面模板后,我們就可以用它來編寫同樣風格的頁面,只要把模板中相應可編輯區(qū)的文字更新一下就可以了,這就減少了許多的重復工作量。</P>; Q4 V+ T* W+ ^9 P! E. b
<P>而C++中的模板也正是這樣,它可以使我們編寫程序時減少許多重復的工作量,<FONT color=#ff0000>C++支持兩種模板</FONT>,<FONT color=#0000ff>一種是函數模板</FONT>,<FONT color=#0000ff>一種是類模板</FONT>。模板由程序員定義,是供C++編譯器來使用的,由它根據實際的類型參數來替代模板中的相應類型。</P>- t) k2 G( C$ n M( B5 ]
<P>要識記的部分有:</P>
" a) D7 p3 C5 `' T<P><FONT color=#0000ff>模板</FONT>可分為哪<FONT color=#0000ff>兩種類型</FONT>,一是<FONT color=#0000ff>有約束的模板</FONT>,二是<FONT color=#0000ff>無約束的模板</FONT>。對于函數模板而言,對類型沒有任何要求,只需是同一類型的變量就可以的模板就是無約束的函數模板。而在對處理的數據有要求的函數模板就是有約束的函數模板,比如要求相應的數據是可序列化的(比較大小).</P>
$ Q3 g+ l! K |+ \+ x9 K1 i<P><FONT color=#0000ff>定義模板的方法</FONT>:函數模板的格式為:</P>
- @6 `7 ]* j: j. D7 p- N<P>template <class T></P>
; _& Q5 L& k# g<P>T fun (T a, T b ...)</P>+ ^1 Z+ t2 W0 p" ^& k5 W( e
<P>{ //...}</P>. G: @; k$ O4 R" x
<P>其中的class與類沒有任何關系,其意可理解為"用戶定義或固有的類型:"(當然這個類型也可以是一個類),注意是用尖括號括起來的。這個形式基本上就是把一般函數的類型標識符改成 class后面的標識符T,然后在這個函數前面加一個模板的標識符,這就告訴編譯器,以下的函數是個函數模板 。到時候要用相應的類型來替換這個T。這和我們創(chuàng)建文檔模板也差不多。</P> |