C++中函式模板的用法詳細解析
阿新 • • 發佈:2019-01-24
一、函式模板的產生原因:
函式的過載可以實現一個函式名多用,將功能相同或者類似函式用同一個名來定義。這樣可以簡化函式的呼叫形式,但是程式中,仍然需要分別定義每一個函式。那麼有什麼辦法可以讓我們少寫一些函式呢?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進行操作,編譯系統會根據資料的型別自動呼叫對應的函式。