模板
模板把函式或類要處理的資料型別引數化,表現為引數的多型
性,稱為類屬。
模板用於表達邏輯結構相同,但具體資料元素型別不同的資料
物件的通用行為。
什麼是模板:
類屬 —— 型別引數化,又稱引數模板
使得程式(演算法)可以從邏輯功能上抽象,把被處理的物件(資料)型別作為引數傳遞
c++提供兩種模板機制: 函式模板
類模板函式模板宣告:
template < 型別形式參數列 >
型別 函式名 ( 形式參數列 )
1213
void
main()
142.氣泡排序法的函式模板:
1 #include 2using
namespace
std;
34 template //
模板宣告
5void sortbubble(elementstype* a,int size) //
類屬引數和普通型別引數621
}22}23
}24void
main()25;
28int b = ;
29 sortbubble(b,5
);30 sortbubble(a,5
);31
for(int i=0;i<5;i++)
3235 }
3.過載函式模板:
有些特殊情況需要函式模板參與過載
例如template < typename t >
t max ( t a , t b )
void f ( int i , char c )
int max ( int a , char b ) // 模板函式過載版本
void f ( int i , char c )
1011
//過載函式模板
12 template 13 t max(const t a,const t b,const
t c)
1418
19//
用普通型別過載函式模板
20int max(const
int a,const
char
c)21
24void
main()
254.函式過載模板的匹配約定:
尋找和使用最符合函式名和引數型別的函式,若找到則呼叫它;
否則,尋找乙個函式模板,將其實例化產生乙個匹配的模板函式,若找到
則呼叫它;
否則,尋找可以通過型別轉換進行引數匹配的過載函式,若找到則呼叫它
如果按以上步驟均未能找到匹配函式,則呼叫錯誤。
如果呼叫有多於乙個的匹配選擇,則呼叫匹配出現二義性。
C 模板之函式模板
c 中分為函式模板和類模板,它們之間的相同點是都含有模板型參表,不同點在模板例項化的時候函式模板可以不用顯示的宣告模板類項,編譯器會自動幫我們匹配,而類模板則需要顯示定義出來,例如 template compare type type compare a,b template class queue...
C 模板之函式模板
泛型程式設計 編寫與型別無關的邏輯 是 復用的一種手段。模板是泛型程式設計的基礎 模板代表乙個函式家族,該函式與型別無關,在使用時被引數化,根據實參型別產生函式的特定型別版本 它本身不是類或函式 模板函式的格式 模板的例項化 產生模板特定型別的過程稱為函式模板的例項化 template t add ...
c 之模板函式 模板
模板就是建立通用的模具,大大提高復用性。c 的另一種程式設計思想是泛型程式設計,主要利用的就是模板。c 提供兩種模板機制 函式模板和類模板。宣告 template typename可以替換成class 函式模板 函式模板的作用 建立乙個通用函式,其函式返回值型別和形參型別可以不具體制定,用乙個虛擬的...