c 之函式模板

2022-09-08 13:42:15 字數 1395 閱讀 2108

模板

模板把函式或類要處理的資料型別引數化,表現為引數的多型

性,稱為類屬。

模板用於表達邏輯結構相同,但具體資料元素型別不同的資料

物件的通用行為。

什麼是模板:

類屬 —— 型別引數化,又稱引數模板

使得程式(演算法)可以從邏輯功能上抽象,把被處理的物件(資料)型別作為引數傳遞

c++提供兩種模板機制:  函式模板

類模板函式模板宣告:

template  < 型別形式參數列 >

型別  函式名 ( 形式參數列 )

1213

void

main()

142.氣泡排序法的函式模板:

1 #include 2

using

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 函式模板 函式模板的作用 建立乙個通用函式,其函式返回值型別和形參型別可以不具體制定,用乙個虛擬的...