泛型編程是C++繼面向?qū)ο缶幊讨蟮挠忠粋€(gè)重點(diǎn),是為了編寫與具體類型無關(guān)的代碼。而模板是泛型編程的基礎(chǔ)。模板簡(jiǎn)單來理解,可以看作是用宏來實(shí)現(xiàn)的,事實(shí)上確實(shí)有人用宏來實(shí)現(xiàn)了模板類似的功能。模板,也可以理解為模具行業(yè)的模型。根據(jù)分類,有函數(shù)模板和類模板。根據(jù)傳入的不同模板參數(shù),函數(shù)模板會(huì)生成不同模板函數(shù)。類模板則生成不同的模板類。

 

模板參數(shù)

1.    概念

模板定義以關(guān)鍵字template開始,<>中是模板參數(shù)列表(template parameter list),模板參數(shù)列表即表示可以是一個(gè)或多個(gè)模板參數(shù)(template parameter)。

  • 模板實(shí)參則是在實(shí)例化函數(shù)模板或是類模板時(shí)的類型或值。
  •  模板形參是通過模板實(shí)參推導(dǎo)出來的或是直接顯式指定。
  •  模板參數(shù)和普通函數(shù)參數(shù)一樣,可以有默認(rèn)值參數(shù)。

2.    模板形參分類

  • 類型參數(shù)(type parameter)

表明這個(gè)模板參數(shù)是一個(gè)類型。

template<class/typename T, ……>

  • 非類型參數(shù)(nontype parameter)

表明這個(gè)模板參數(shù)不是一個(gè)類型,而是常量數(shù)值,只能是整形、指針和引用。

網(wǎng)友評(píng)論