函數重載功能實現了一個函數名的重復定義,但是即使是這樣,在程序中仍然需要分別定義每一個函數,如下連接: http://blog.csdn.net/chaipp0607/article/details/55281496
為了解決這個問題,C++提供了函數模板。所謂函數模板,實際上是建立一個通用的函數,其函數的類型和形參類型不具體指定,用一個虛擬的類型來代替。這個通用函數就稱為函數模板。 凡是函數體相同的函數都可以用這個模板來代替,不比定義多個函數,只。須在模板中定義一次即可。在調用函數時系統(tǒng)會根據實參的類型來取代模板中的虛擬類型,從而實現不同的函數功能。
定義函數模板的一般形式:
template <typename T>或者:
template <class T>T為虛擬的類型名,class和typename的作用相同,都表示“類型名”,可以互換。
#include <iostream> using namespace std; template <typename T>T max_PRivate(T a,T b){ if (b>a) a=b; return a;}int main( ) { int i =1; int j =2; int m; double q =1.1; double w =2.2; double e; m = max_private(i,j); e = max_private(q,w); cout <<m<<endl; cout <<e<<endl; getchar(); return 0; }運行結果: 2 2.2
注意,函數模板只適用于與函數體相同,函數的參數個數相同,類型不同的情況。
新聞熱點
疑難解答
圖片精選