#include <iostream>#include <string>usingnamespacestd;template < typename T >
class Operator
{
public:T add(T a, T b){return a + b;}T minus(T a, T b){return a - b;}T multiply(T a, T b){return a * b;}T divide(T a, T b){return a / b;}
};/* 這里只是做一個演示,并沒有真正重載‘-’操作符 */stringoperator-(string& l, string& r)
{return"Minus";
}int main()
{Operator<int> op1;cout << op1.add(1, 2) << endl;Operator<string> op2;cout << op2.add("D.T.", "Software") << endl;cout << op2.minus("D.T", "Software") << endl;return0;
}
3、類模板的工程應用
類模板必須在頭文件中定義
類模板的實現,不能分開在不同的文件
類模板外部定義的函數,需要加上模板<>聲明
下面是一個程序的頭文件: Operater.h
#ifndef _OPERATOR_H_#define _OPERATOR_H_template < typename T >
class Operator
{
public:T add(T a, T b);T minus(T a, T b);T multiply(T a, T b);T divide(T a, T b);
};/* 類模板外部定義的函數,需要加上相應的聲明Operator<T> */
template < typename T >
T Operator<T>::add(T a, T b)
{return a + b;
}template < typename T >
T Operator<T>::minus(T a, T b)
{return a - b;
}template < typename T >
T Operator<T>::multiply(T a, T b)
{return a * b;
}template < typename T >
T Operator<T>::divide(T a, T b)
{return a / b;
}#endif