更新時(shí)間:2018-11-09 來(lái)源:黑馬程序員技術(shù)社區(qū) 瀏覽量:
在C++技術(shù)里面,都接觸過(guò)函數(shù),那么遇到函數(shù)模板應(yīng)該要怎樣去做呢?請(qǐng)看下文
函數(shù)模板是通用的函數(shù)描述,通過(guò)將類(lèi)型作為參數(shù)傳遞給模板,可使編譯器生成該類(lèi)型的函數(shù)。
當(dāng)函數(shù)形式完全相同,只是參數(shù)類(lèi)型不同時(shí),可以使用函數(shù)模型,這樣可以極大的減少代碼量,便于維護(hù)。
函數(shù)模板聲明形式如下:
template<typename 數(shù)據(jù)類(lèi)型參數(shù)標(biāo)識(shí)符>
< 返回類(lèi)型><函數(shù)名>(參數(shù)表)
{
函數(shù)體
}
其中template和typename是固定的標(biāo)識(shí)符,不可更好。為了使用簡(jiǎn)單,數(shù)據(jù)類(lèi)型參數(shù)標(biāo)識(shí)符常會(huì)使用T。
例1:
#include<iostream>
using namespace std;
template<typename T>
void Swap(T &a,T &b)
{
T c;
c=a;
a=b;
b=c;
}
int main()
{
int a=5;
int b=3;
Swap(a,b);
cout<<"a:"<<a<<" "<<"b:"<<b<<endl;
double c=1.2;
double d=3.6;
Swap(c,d);
cout<<"c:"<<c<<" "<<"d:"<<d<<endl;
system("pause");
}
結(jié)果如下:
a:3 b:5
c:3.6 d:1.2
請(qǐng)按任意鍵繼續(xù). . .
例2:
#include<iostream>
using namespace std;
template<typename T1,typename T2>
T2 Add(T1 a,T2 b)
{
T2 c;
c = a+b;
return c;
}
int main()
{
int a=5;
double b=1.2;
cout<<Add(a,b)<<endl;
double c=1.2;
int d = 5;
cout<<Add(c,d)<<endl;
system("pause");
}
結(jié)果如下:
6.2
6
請(qǐng)按任意鍵繼續(xù). . .
可以看到,通過(guò)函數(shù)模板,函數(shù)會(huì)自動(dòng)根據(jù)輸入?yún)?shù)的類(lèi)型進(jìn)行轉(zhuǎn)換,這樣可以極大減少代碼量。
作者:黑馬程序員C/C++培訓(xùn)學(xué)院
首發(fā):http://web.itheima.com/