template<class A_Type> web
class Calcide
{
public:
A_Type add(A_Type a, A_Type b)
{
return a+b;
}
A_Type multiply(A_Type a, A_Type b);
};
template<class A_Type>
A_Type Calc<A_Type>::multiply(A_Type a, A_Type b)
{
return a*b;
} 若是templated classes 和 templated functions用相同的類型參數的話,且在class內定義模板函數的話, 則可使用相同的類型參數, 若是在class外定義函數體的話,則要再寫一次template,並且限定函數名的class 名後要加上類型參數,名字能夠不用和定義class時的相同。 template<class retType, class argType>
retType cast(argType a)
{
return (retType)a;
} 若是按上面的順序聲明類型參數的話,則調用該函數時,能夠cast<double>(10); 定義templated classes裏的templated functions template<class T> class Tw {
public:
template<class S>
S tt(S a);
};
template<class T>
template<class S>
S Tw<T>::tt(S a)
{
return a;
} 在class外定義函數體時,要寫兩次template,一次是針對class的,一次是針對function的。