底下的程式是一個取最大值的GetMax Function Templates
#include <iostream>
using namespace std;
template <class T>
T GetMax (T a, T b) {
T result;
result = (a>b)? a : b;
return (result);
}
int main () {
int i=5, j=6, k;
long l=10, m=5, n;
// k=GetMax<int>(i,j);
// n=GetMax<long>(l,m);
k=GetMax(i,j);
n=GetMax(l,m);
cout << k << endl;
cout << n << endl;
return 0;
}
T GetMax(T a,T b):T表示可以任意取代各種的資料型態,如果T是int時,代表著傳入了2個int值,回傳1個int值
上面程式執行結果如下:
6
10
思考一下:如果想要傳進1個int,1個long,這樣子可以嗎?
答案是可以做,但你必需修改你的template,改成像下面的方式宣告
template <class T, class U>
T GetMin (T a, U b) {
return (a<b?a:b);
}
而你的主程式就可以像下面的方式使用
int i,j;
long l;
//i = GetMin<int,long> (j,l);
i = GetMin (j,l);
資料來源:
http://www.cplusplus.com/doc/tutorial/templates.html
3 則留言:
謝謝^^
超級簡單明瞭!! 讚讚讚
張貼留言