所謂泛型程式設計就是以獨立於任何特定型別的方式編寫**。模板是泛型程式設計的基礎。模板是建立類或函式的藍圖或公式。
物件導向程式設計所依賴的多型性稱為執行時多型性,泛型程式設計所依賴的多型性稱為編譯時多型性或引數式多型性。
16.1 模板定義
我們可以不用為每個型別定義乙個新函式,而是只定義乙個函式模板(function template)。函式模板是乙個獨立於型別的函式,可作為一種方式,產生函式的特定型別版本。
template
int compare(const t &v1, const t &v2)
template
int compare(const t &v1, const t &v2)模板定義以關鍵字template開始,後接模板形參表(template parameter list),模板形參表是用尖括號住的乙個或多個模板形參(template parameter)的列表,形參之間以逗號分隔。
模板形參表不能為空。
1.模板形參表
模板形參表很像函式形參表,函式形參表定義了特定型別的區域性變數但並不初始化那些變數,在執行時再提供實參來初始化形參。
同樣,模板形參表示可以在類或函式的定義中使用的型別或值。在函式內部,可以使用名字t引用乙個型別,t表示哪個實際型別由編譯器根據所用的函式而確定。
2. 使用函式模板
使用函式模板時,編譯器會推斷哪個(或哪些)模板實參(template argument)繫結到模板形參。一旦編譯器確定了實際的模板實參,就稱它例項化(instantiate)了函式模板的乙個例項。
cout <
cout <
函式模板可以用與非模板函式一樣的方式宣告為inline。說明符放在模板形參表之後,返回型別之前,不能放在關鍵字template之前。
template inline
const t &the_min(const t &v1, const t &v2)
template inline
const t &the_min(const t &v1, const t &v2)cout<
摘自 xufei96的專欄
第16章 模板與泛型程式設計 10
16.4.4 queue和queueitem的友元宣告 1.將類模板設為友元 template class queueitem type item queueitem next friend class queue 2.queue輸出操作符 template ostream operator ost...
第16章 模板與泛型程式設計 13
16.5 乙個泛型控制代碼類 16.5.1 定義控制代碼類 ifndef handle h define handle h include stdafx.h include using namespace std templateclass handle t operator t operator ...
第16章 模板與泛型程式設計 15
16.6.2 類模板的特化 1.定義類特化 template class queue const string front const void push const char void pop bool empty const friend ostream operator ostream os,...