柚子快報(bào)激活碼778899分享:C++基礎(chǔ):函數(shù)模板
柚子快報(bào)激活碼778899分享:C++基礎(chǔ):函數(shù)模板
為了代碼重用,代碼必須是通用的;通用的代碼就必須不受數(shù)據(jù)類型的限制。那么我們可以把數(shù)據(jù)類型改為一個(gè)設(shè)計(jì)參數(shù),這種類型的程序設(shè)計(jì)稱為參數(shù)化程序設(shè)計(jì),軟件模板有模板構(gòu)造,包括函數(shù)模板和類模板。
函數(shù)模板可以用來(lái)創(chuàng)建一個(gè)通用功能的函數(shù),以支持多種不同形參,簡(jiǎn)化重載函數(shù)的設(shè)計(jì),函數(shù)模板的定義如下:
template<模板參數(shù)表>
返回類型?函數(shù)名?(形式參數(shù)表)
{
? ? ? ? ? ?.......;//函數(shù)體
}
<模板參數(shù)表>尖括號(hào)中不能為空,參數(shù)可以有多個(gè),用逗號(hào)分開(kāi),模板參數(shù)主要是模板類型參數(shù)。
模板類型參數(shù)代表一種類型,由關(guān)鍵字class或typename(建議用typename)后加一個(gè)標(biāo)識(shí)符構(gòu)成,在這里兩個(gè)關(guān)鍵字的意義相同,它們表示后面的參數(shù)名代表一個(gè)潛在的內(nèi)置或用戶設(shè)計(jì)類型。 如下所示:
template
T Max(T a, T b)
{
cout << "a type" << typeid(a).name() << endl;
cout << "T type" << typeid(T).name() << endl; //對(duì)類型進(jìn)行識(shí)別
return a > b ? a : b;
}
int main()
{
cout << Max(12, 23) << endl;
cout << Max('a','b') << endl;
cout << Max(12.23,34.45) << endl;
}
??函數(shù)模板根據(jù)一組實(shí)際類型或值構(gòu)造出獨(dú)立的函數(shù)的過(guò)程通常是隱式發(fā)生的,稱為模板實(shí)參推演。
template
void PrintAr(T (&br)[N])
{
cout << sizeof(br) << endl;
}
int main()
{
int ar[10] = { 1,2,3,4,5,6,7};
double dx = {1.2,2.3,3.4,4.5,5.6};
//typename +elemnum;
PrintAr(ar);
PrintAr(dx);
return 0;
}
柚子快報(bào)激活碼778899分享:C++基礎(chǔ):函數(shù)模板
相關(guān)文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。