模板類函數(shù)模板
時間:2023-03-28 04:40:01 | 來源:營銷百科
時間:2023-03-28 04:40:01 來源:營銷百科
模板類函數(shù)模板:函數(shù)模板(function templates)
使用 函數(shù)模板,你可以指定一組基于相同代碼但是處理不同類型或類的函數(shù),例如:
template class type void MySwap( type a, type b )
{
type c( a );
a = b; b = c;
}
這段代碼定義了一個函數(shù)家族來交換函數(shù)的參數(shù)值。從這個template你可以產(chǎn)生一系列函數(shù),不僅可以交換 整型、 長整型,而且可以交換用戶定義類型,如果類的 構造函數(shù)和賦值操作符被適當?shù)囟x,MySwap函數(shù)甚至可以交換類。
另外, 函數(shù)模板可以阻止你交換不同類型的對象,因為 編譯器在編譯時知道參數(shù)a和b的類型。
你可以像調用一個普通函數(shù)一樣調用一個 函數(shù)模板函數(shù);不需要特殊的語法。例如:
int i, j;
char k;
MySwap( i, j ); //OK
MySwap( i, k ); //Error, different types.
可以對 函數(shù)模板的template參數(shù)作外部說明,例如:
templateclass T void f(T) {...}
void g(char j)
{ fint(j);
//generate the specialization f(int)
}
當template參數(shù)在外部說明時,普通固定的類型轉換會轉換函數(shù)的參數(shù)為相應的 函數(shù)模板參數(shù)。在上面的的例子中,編譯器會將(char j)轉換成整型