第七天模板是支持參數(shù)化程序設(shè)計(jì)的工具通過(guò)它可以實(shí)現(xiàn)多態(tài)性_第1頁(yè)
第七天模板是支持參數(shù)化程序設(shè)計(jì)的工具通過(guò)它可以實(shí)現(xiàn)多態(tài)性_第2頁(yè)
第七天模板是支持參數(shù)化程序設(shè)計(jì)的工具通過(guò)它可以實(shí)現(xiàn)多態(tài)性_第3頁(yè)
第七天模板是支持參數(shù)化程序設(shè)計(jì)的工具通過(guò)它可以實(shí)現(xiàn)多態(tài)性_第4頁(yè)
第七天模板是支持參數(shù)化程序設(shè)計(jì)的工具通過(guò)它可以實(shí)現(xiàn)多態(tài)性_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余9頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、template template 函數(shù)體定義/template 開(kāi)始的,該關(guān)鍵字之后是使用尖括號(hào)括起 形式為templatetypename 數(shù)據(jù)類(lèi)型參數(shù)標(biāo)識(shí)符其中,template 是定義模板函數(shù)的關(guān)鍵字;template 后面的尖括號(hào)不能省略;typename(class) Tfuc(TTdoubled; d的數(shù)據(jù)類(lèi)型doubleTTdoubled; d的數(shù)據(jù)類(lèi)型doubleTdoublefuc(doubledouble class 函數(shù)模板允許使用多個(gè)類(lèi)型參數(shù),但在 template typename或classtemplateclass 1,class template語(yǔ)句與函數(shù)模板

2、定義語(yǔ)句之間不允許有別的語(yǔ)句。如下面的12345template語(yǔ)句與函數(shù)模板定義語(yǔ)句之間不允許有別的語(yǔ)句。如下面的12345678template Tx,T2. 123456789 void&x,Treturnvoidi,charmin(ii正確調(diào)用 min(jj正確調(diào)用 min(ijmin(jimin(ii正確調(diào)用 min(jj正確調(diào)用 min(ijmin(ji1min(i,ij不能解, nt( void&x,Treturnvoidmin(i,min(j,min(i,min(j,i,char。1. 模板的概已經(jīng)學(xué)過(guò)重載(Overloading),對(duì)重載函數(shù)。1. 模板的概已經(jīng)學(xué)過(guò)重載(Ov

3、erloading),對(duì)重載函數(shù)而言,C+的檢查機(jī)制能通過(guò)函數(shù)參數(shù)的不同及所類(lèi)的不同。正確的調(diào)用重載函數(shù)。例如,為求兩個(gè)數(shù)的最大值定義 MAX()函數(shù)需要對(duì)不/函數(shù)return(xy)?x:y/函數(shù)floatmax(floatx,floatreturn(xy)?x:y/函數(shù)doublemax(doublex,doublereturn(cy)?x:y但如果在主函數(shù)分別定義了 chara,b; 那么在max(a,b);時(shí) 程序就會(huì)出錯(cuò),因沒(méi)有定義char的重現(xiàn)在新審視上述的 一套代碼解決現(xiàn)在新審視上述的 一套代碼解決這個(gè)問(wèn)題呢?這樣就會(huì)避免因重載函數(shù)定義不 全面而帶來(lái)的調(diào)用錯(cuò)誤。為解決上述題 即把

4、類(lèi)型定義為參數(shù), 從而實(shí)現(xiàn)了真正的代碼可重用性。模版可以分為兩類(lèi),一個(gè)是函數(shù)模版,外一個(gè)是類(lèi)模版函數(shù)模板的寫(xiě)函數(shù)模板的一般形式如下 返回類(lèi)型 函數(shù)名(形參表/函數(shù)定義體 說(shuō)明: template一參多余一個(gè) ,每個(gè)形參前都要加class 可以包含基本數(shù)據(jù)類(lèi)型可以包請(qǐng)看以下程序#includeusingusing一個(gè)函數(shù)模版,用來(lái)比較輸入的兩個(gè)相同數(shù)據(jù)類(lèi)型的參數(shù)的大小,classtypenametemplateclassT x,T voidmain(doublecoutcout程序 voidmain(doublecoutcout程序main()函數(shù)中定義了兩個(gè)整型變量n1n2 兩個(gè)雙精度類(lèi)型變量

5、d1d2然后調(diào)用minn2); 即實(shí)例化函數(shù)模板Tx,Ty)其中型求出n1,n2中的最小值同理調(diào)用時(shí)d1,d2中的3. 類(lèi)模板的定義一個(gè)類(lèi)模板Templateclass或者也可以用typenameTclass類(lèi)名類(lèi)定義 是是多/ #ifndef#define templatetypenameT1,typenameclassT1 T2 myClass(T1a,T2void#define templatetypenameT1,typenameclassT1 T2 myClass(T1a,T2voidtemplatetypenameT1,typenamemyClass:myClass(T1a,T2/

6、這是voidtemplate,char,char class, , 標(biāo)準(zhǔn)模板庫(kù)STL簡(jiǎn)介 STL 的代碼從廣義上講分為三類(lèi):algorithm(算法、container(容器)和 iterator(迭標(biāo)準(zhǔn)模板庫(kù)STL簡(jiǎn)介 STL 的代碼從廣義上講分為三類(lèi):algorithm(算法、container(容器)和 iterator(迭 、的STL100for_each將為指定序列中的每一 STL頭文件中最大的一個(gè)(盡管它很好理解,它是由一大堆模版函數(shù)組成的,可以認(rèn)為每算的模板函數(shù),包括加法和乘法在序列上的一些操作。2的代碼,這些代碼都十分相似,只是為了適應(yīng)不同數(shù)據(jù)的變化而在細(xì)節(jié)上有所出入。 向量列表雙隊(duì)列集合棧隊(duì)列列表雙隊(duì)列集合棧隊(duì)列3STL STL 中用來(lái)將算法和容器聯(lián)系起來(lái),起著一種黏STL 提供的所有算法都是通過(guò)迭代器存取元素序列進(jìn)行工作的,每一個(gè)STL 中的幾個(gè)模板的 , 2. 2. O(1 隨3. 對(duì)list隨3.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論