1. 程式人生 > >C++中函式模板的用法詳細解析

C++中函式模板的用法詳細解析

一、函式模板的產生原因:

函式的過載可以實現一個函式名多用,將功能相同或者類似函式用同一個名來定義。這樣可以簡化函式的呼叫形式,但是程式中,仍然需要分別定義每一個函式。那麼有什麼辦法可以讓我們少寫一些函式呢?C++提供了函式模板就可以極大地方便同類型函式的使用。

二、什麼是函式模板?

所謂函式模板實際上是建立一個通用函式,其函式型別和形參型別不具體指定,用一個虛擬的型別來代表,這個通用函式就稱為函式模板。凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需要在模板中定義一次即可。在呼叫函式時,系統會根據實參的型別來取代模板中的虛擬型別,從而實現了不同函式的功能。

三、函式模板的一般形式

template <typename T>(通用函式定義)或者template <class T>

四、示例比較

普通函式,不使用函式模板:

#include<iostream>
using namespace std;
int n_add(int a,int b)                              //定義函式n_add用於int型資料相加
{
 int c;
 c=a+b;
 return c;
} 
double n_add(double a,double b)    //定義函式n_add用於double型函式相加
{
 double c;
 c=a+b;
 return c;
}
int main()
{
 cout<<n_add(8,2)<<endl;             //呼叫n_add函式
 cout<<n_add(8.35,5.5)<<endl;   //呼叫n_add函式
 return 0;
}

使用函式模板:
#include<iostream>
using namespace std;
template<typename T>
T n_add(T a,T b)
{
 T c;
 c=a+b;
 return c;
} 
int main()
{
 cout<<n_add(8,2)<<endl;
 cout<<n_add(8.12,2.2)<<endl;
 return 0;
}

對比不使用函式模板和使用函式模板的程式碼,在函式的呼叫形式上進行了簡化,使用了函式的過載技術,對於所有的資料,統一使用函式n_add進行操作,編譯系統會根據資料的型別自動呼叫對應的函式。
我們使用了函式模板,我們就沒有必要去一一書寫對應的函式,我們只需要構造相應的模板,然後系統會自動判斷資料的型別,然後替代對應的虛擬型別。