C++提供了函數模闆(function template)。所謂函數模闆,實際上是建立一個通用函數,其函數類型和形參類型不具體指定,用一個虛拟的類型來代表。這個通用函數就稱為函數模闆。
凡是函數體相同的函數都可以用這個模闆來代替,不必定義多個函數,隻需在模闆中定義一次即可。在調用函數時系統會根據實參的類型來取代模闆中的虛拟類型,進而實作了不同函數的功能。
下面通過一個傳回最大值的函數來舉例。
定義函數模闆的一般形式為:
template < typename T>
傳回值類型 函數名 (參數表) {
}
或者:
template < class T>
傳回值類型 函數名 (參數表) {
}
其中傳回值類型和參數類型可以用T來指代
//
// main.cpp
// TestTemplateFunc
//
// Created by cc on 14-3-30.
// Copyright (c) 2014年 cc. All rights reserved.
//
#include <iostream>
using namespace std;
//聲明模闆函數
template <class T>
T calcMaxValue(T x, T y);
int main(int argc, const char * argv[]) {
//調用函數時,如果想讓T指代int類型,則傳入int實參,傳回int類型
int maxVal = calcMaxValue(15, 5);
//如果想讓T指代float類型,則傳入的參數就是float類型,傳回的類型也是float類型
//其他類型同理,使用函數模闆可以減少函數重載的使用,優化代碼量
float maxVal2 = calcMaxValue(231.12f, 555.231f);
cout << "較大值:" << maxVal << endl;
cout << "較大值:" << maxVal2 << endl;
return 0;
}
//定義模闆函數,傳回值類型和形式參數都用T來表示
template <class T>
T calcMaxValue(T x, T y) {
return (x > y) ? x : y;
}
輸出結果:

本文由CC原創總結,如需轉載請注明出處:http://blog.csdn.net/oktears/article/details/22583207