搜尋此網誌

2015年3月8日 星期日

Template 樣板

樣板分成以下幾種
1. 樣板函式
2. 樣板類別
3. 函式樣板
4. 類別樣板

其中第一和二的達成則是靠重載(overload)來實現,而三跟四則是透過template的宣告來達成。

而這其中的差異性就是 樣板函式或樣板類別在overload時已宣告成已知的資料型別。
函式樣板跟類別樣板則是可以使用任何資料型別來實現。
Notice: 函式樣板跟類別樣板因為可以使用任何資料型別,所以記憶體使用上較多。

函式樣板跟類別樣板的使用時機為:對於任何的資料型別都是使用相同的操作
使用樣板的好處是對於不同資料型別不需要再overload多次。

函式樣板宣告方法有三種
1. template < class T >
2. tempate < typename ElementType >
3. template< class BorderType, class FillType >

Example:
template< class T > // 宣告此function為樣板
void printArray( const T *array, const int count) // 其中T代表任意的資料型別

也可為如此
template< class T, int count>
void printArray(const T *array)

使用方式
int a[5] = {1,2,3,4,5};
printArray(a, 5); //代表array為int的資料型態

char b[] = "Hello";
printArray(b, sizeof(b)); //代表array為char的資料型態


沒有留言:

張貼留言