C 中的函式模板詳解

2021-06-16 19:43:51 字數 1123 閱讀 3384

了解或熟悉c++的都,都對函式過載有一定的了解。c++中的函式過載就是指申明幾個功能類似的函式,但這些函式的引數型別或順序必須不同,即同乙個函式不同的運算功能。例如,比較a,b的大小,我們可以定義乙個max函式,對不同的型別有如下的版本:

char max( char a, char b)

int max ( int a, int b)

float max( float a, float b)

在上面的三個函式中,如果輸入對應型別的引數,c++編譯器能夠正確的選擇需要執行的函式。但是如果我們輸入兩個double型別的引數,此時,編譯器就會報錯,因為我們沒有定義double型別的函式過載。如果,再有其他型別,如long型別、unsigned char型別等,那麼我們需要都過載他們,這樣會造成**的**以及過載不全印發 的問題。

為了解決上述問題,c++引入了模板機制template。模板可以實現**的可重用,實現泛化程式設計。模板分為函式模板和類模板。下面我們來介紹下函式模板。

1)函式模板的一般定義

template 返回值型別  函式名(形參列表)

template是乙個申明模板的關鍵字,class或typename是引數型別,如果有多個型別,則需要新增多個class或typename。可以通過下面的例子來進一步理解模板函式:

template _t const& max( const _t& a, const _t& b)

int main( int argc, char*argv)

{ //int ans = gsum(4,5,6,7,1);

//cout<<"gsum(4,5,6,7,1)="<(6,7)<(12.0,11.0)《函式模板的最大的好處就是可以根據需要來確定函式的引數型別,上面通過定義乙個模板函式,我們就可以在模板具體化的時候傳遞引數的型別,返回兩者中的最大值。另外,函式模板也和其他函式一樣,支援過載。通過上面的例子,我們可以發現函式模板的兩個最大的好處:

1))相對巨集來講, 模板增加了型別安全檢測。

2) 相對繼承來講, 模板解決了類和函式**問題。

函式模板是c++的一種重大機制,靈活的使用模板,可以大大提高程式設計效率,提高**的重用率,減少**的維護工作。

C 函式模板詳解

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

C 中的函式模板

我們在定義函式時,可以通過定義函式模板,來簡化一些功能相同而資料型別不同的函式的定義和呼叫過程。c 中的函式模板 對於類的宣告來說,也有同樣的問題。有時,有兩個或多個類,其功能是相同的,僅僅是資料型別不同,如下面語句宣告了乙個類 class compare int int max int min f...

C 中的函式模板

模板的意義 對型別也可以進行引數化了 template 定義乙個模板引數列表,typename也可以用class替換 bool compare t a,t b 特例化 template bool compare const char a,const char b bool compare const...