泛型編程是C++繼面向?qū)ο缶幊讨蟮挠忠粋€重點,是為了編寫與具體類型無關(guān)的代碼。而模板是泛型編程的基礎(chǔ)。模板簡單來理解,可以看作是用宏來實現(xiàn)的,事實上確實有人用宏來實現(xiàn)了模板類似的功能。模板,也可以理解為模具行業(yè)的模型。根據(jù)分類,有函數(shù)模板和類模板。根據(jù)傳入的不同模板參數(shù),函數(shù)模板會生成不同模板函數(shù)。類模板則生成不同的模板類。
模板參數(shù)
1. 概念
模板定義以關(guān)鍵字template開始,<>中是模板參數(shù)列表(template parameter list),模板參數(shù)列表即表示可以是一個或多個模板參數(shù)(template parameter)。
- 模板實參則是在實例化函數(shù)模板或是類模板時的類型或值。
- 模板形參是通過模板實參推導出來的或是直接顯式指定。
- 模板參數(shù)和普通函數(shù)參數(shù)一樣,可以有默認值參數(shù)。
2. 模板形參分類
- 類型參數(shù)(type parameter)
表明這個模板參數(shù)是一個類型。
template<class/typename T, ……>
- 非類型參數(shù)(nontype parameter)
表明這個模板參數(shù)不是一個類型,而是常量數(shù)值,只能是整形、指針和引用。