




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第C++深入了解模板的使用目錄一.泛型編程二.函數(shù)模板1.函數(shù)模板概念2.函數(shù)模板格式3.函數(shù)模板的原理三.類模板
一.泛型編程
泛型編程:不再是針對某種類型,能適應(yīng)廣泛的類型,跟具體的類型無關(guān)的代碼
如何實現(xiàn)一個通用的交換函數(shù)呢?
voidSwap(intleft,intright)
inttemp=left;
left=right;
right=temp;
voidSwap(doubleleft,doubleright)
doubletemp=left;
left=right;
right=temp;
}
使用函數(shù)重載雖然可以實現(xiàn),但是有一下幾個不好的地方:1.重載的函數(shù)僅僅是類型不同,代碼復用率比較低,只要有新類型出現(xiàn)時,就需要用戶自己增加對應(yīng)的函數(shù)2.代碼的可維護性比較低,一個出錯可能所有的重載均出錯
因此我們需要告訴編譯器一個模子,讓編譯器根據(jù)不同的類型利用該模子來生成代碼
二.函數(shù)模板
模板分為:函數(shù)模板,類模板
1.函數(shù)模板概念
函數(shù)模板代表了一個函數(shù)家族,該函數(shù)模板與類型無關(guān),在使用時被參數(shù)化,根據(jù)實參類型產(chǎn)生函數(shù)的特定類型版本。
2.函數(shù)模板格式
templatetypenameT
返回值類型函數(shù)名(參數(shù)列表){}
說明:
1.templateclassT和templatetypenameT在此暫時認為一樣,templatestructT是錯誤的,沒有這種寫法
2.T是type的縮寫,T不一定寫T,可以寫任意字母,比如X,t但是習慣寫為T
舉例:
templatetypenameT//或templateclassT
voidSwap(Tleft,Tright)
Ttmp=left;
left=right;
right=tmp;
intmain()
inta=0,b=1;
doublec=2.2,d=3.3;
swap(a,b);
swap(c,d);
return0;
}
swap(a,b);和swap(c,d);調(diào)用的是同一個函數(shù)嗎?
答:不是同一個。底層匯編可以看出不是同一個,如果調(diào)試時發(fā)現(xiàn)走的是同一個函數(shù),其實是編譯器的優(yōu)化導致。
實際上以后swap函數(shù)都不用自己寫了,庫中有模板,直接用就行
3.函數(shù)模板的原理
在編譯器編譯階段,對于模板函數(shù)的使用,編譯器需要根據(jù)傳入的實參類型來推演生成對應(yīng)類型的函數(shù)以供調(diào)用。比如:當用double類型使用函數(shù)模板時,編譯器通過對實參類型的推演,將T確定為double類型,然后產(chǎn)生一份專門處理double類型的代碼,對于字符類型也是如此。模板的實例化:
三.類模板
類模板的定義格式
templateclassT1,classT2,...,classTn
class類模板名
{
//類內(nèi)成員定義
};
舉例:調(diào)用Stackintst1;時,用int替換模板中的T。調(diào)用Stackdoublest1;時,用double替換模板中的T
//類模板
templateclassT
classStack
public:
Stack(intcapacity=0)
_a=newT[capacity];
_capacity=capacity;
_top=0;
~Stack()
cout"~Stack()"endl;
delete[]_a;
_capacity=0;
_top=0;
voidPush(constTx)
private:
T*_a;
int_top;
int_capacity;
intmain()
Stackin
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 以人為本提升醫(yī)護團隊工作效率與質(zhì)量的研究報告
- 醫(yī)療AI的隱私保護與法規(guī)要求
- 醫(yī)療健康管理中的個性化服務(wù)設(shè)計與實施
- AI臨床決策支持系統(tǒng)的科技發(fā)展及其挑戰(zhàn)
- 人性化醫(yī)療服務(wù)的國際比較與借鑒
- 企業(yè)內(nèi)部健康管理探索員工對新型醫(yī)療科技的接受度
- 學校體育教師的工作總結(jié)模版
- 看開學第一課心得體會模版
- 醫(yī)療AI在公共衛(wèi)生領(lǐng)域的倫理應(yīng)用探討
- 業(yè)務(wù)撮合合同范例
- 大學體育與健康知到智慧樹章節(jié)測試課后答案2024年秋齊魯師范學院
- 中考復習課件中考數(shù)學答題策略與技巧課件
- 便利店衛(wèi)生清潔管理規(guī)范
- 脊髓膠質(zhì)瘤診療中國專家共識(2024版)解讀
- 公司手持電動工具安全使用管理制度模版(3篇)
- 【儲能】工商業(yè)儲能業(yè)務(wù)開發(fā)要點及策略分享
- 浙江省“溫州八?!?025屆高考語文三模試卷含解析
- 醫(yī)院食堂營養(yǎng)餐實施方案
- 2024中國房企數(shù)字化產(chǎn)品力白皮書
- 2024-2025學年上學期上海小學數(shù)學六年級期末模擬試卷
- 《地方文化資源在幼兒園中開發(fā)利用的比較研究》
評論
0/150
提交評論