教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

C++的學(xué)習(xí):有關(guān)函數(shù)的模板

更新時間:2018年12月13日14時17分 來源:傳智播客 瀏覽次數(shù):

函數(shù)模板是通用的函數(shù)描述,通過將類型作為參數(shù)傳遞給模板,可使編譯器生成該類型的函數(shù)。 
當(dāng)函數(shù)形式完全相同,只是參數(shù)類型不同時,可以使用函數(shù)模型,這樣可以極大的減少代碼量,便于維護(hù)。

函數(shù)模板聲明形式如下:

template<typename 數(shù)據(jù)類型參數(shù)標(biāo)識符>
<返回類型><函數(shù)名>(參數(shù)表)

{
    函數(shù)體
}

其中template和typename是固定的標(biāo)識符,不可更好。為了使用簡單,數(shù)據(jù)類型參數(shù)標(biāo)識符常會使用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
請按任意鍵繼續(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
請按任意鍵繼續(xù). . .

可以看到,通過函數(shù)模板,函數(shù)會自動根據(jù)輸入?yún)?shù)的類型進(jìn)行轉(zhuǎn)換,這樣可以極大減少代碼量。

作者:傳智播客C/C++培訓(xùn)學(xué)院
首發(fā):
http://c.itcast.cn/
0 分享到:
和我們在線交談!