c++提供了函式模板(function template)。
所謂函式模板,實際上是建立乙個通用函式,其函式型別和形參型別不具體指定,用乙個虛擬的型別來代表。這個通用函式就稱為函式模板。
凡是函式體相同的函式都可以用這個模板來代替,不必定義多個函式,只需在模板中定義一次即可。在呼叫函式時系統會根據實參的型別來取代模板中的虛擬型別,從而實現了不同函式的功能。看下面的例子就清楚了。
【例4.7】將例4.6程式改為通過函式模板來實現。
#include using namespace std;
template//模板宣告,其中t為型別引數
t max(t a,t b,t c) //定義乙個通用函式,用t作虛擬的型別名
int main( )
然後呼叫它。後面兩行(14,15行)的情況類似。
型別引數可以不只乙個,可以根據需要確定個數。如:
template
可以看到,用函式模板比函式過載更方便,程式更簡潔。
但應注意它只適用於函式的引數個數相同而型別不同,且函式體相同的情況,如果引數的個數不同,則不能用函式模板。
c 函式模版
如果需要多個將同乙個演算法用於不同型別的函式,請使用模版 函式模版 要讓編譯器知道程式需要乙個特定形式的交換函式,只需在程式中使用swap 函式即可,編譯器將檢查所使用的引數型別,並生成相應的函式,1.template void swap anytype a,anytype b anytype te...
C 之函式模版
函式模版是通用的函式描述,有時候也被稱為引數化型別。建立模版如下 template void swap any a,any b template void swap job job1,job job2 void show job j int main template void swap job j...
C 函式模版分離編譯
1.函式模版的編譯模式分兩種 完全包含編譯模式和區域性編譯模式 需要用export關鍵字 2.不同的編譯器對這兩種編譯模式的支援各不相同,但一般都支援完全包含編譯模式,具體支援情況需要參照具體使用的編譯器文件 模版函式和普通函式在使用的時候有一定的區別 1 普通函式在使用的原始檔中直接include...