2008年10月21日 星期二

C++ Function Templates的基本用法

因為SystemC裏有用到template的語法,所以複習一下C++裏的Function Templates用法
底下的程式是一個取最大值的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 則留言:

dd 提到...
作者已經移除這則留言。
史丹利 提到...

謝謝^^

Unknown 提到...

超級簡單明瞭!! 讚讚讚

一個小故事讓我們明白資金流通的意義

“又是炎熱小鎮慵懶的一天。太陽高掛,街道無人,每個人都債台高築,靠信用度日。這時,從外地來了一位有錢的旅客,他進了一家旅館,拿出一張1000 元鈔票放在櫃檯,說想先看看房間,挑一間合適的過夜,就在此人上樓的時候---- 店主抓了這張1000 元鈔,跑到隔壁屠戶那裡支付了他欠的肉錢...