#include<iostream>#include<string>usingnamespace std;template<typename T>classOperator//运用自己的模板需要重载操作符{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 devide(T a, T b){return a/b;}};
string operator-(string l, string r)//重载string类的减法{return"Minus";}intmain(){
Operator<int> op1;
cout << op1.add(1,2)<< endl;
Operator<string> op2;
cout << op2.add("chen","liang")<< endl;
cout << op2.minus("chen","liang")<< endl;return0;}
类模板的工程
类模板必须在头文件定义
类模板不能分开实现在不同的文件中
类模板外部定义的成员函数需要加上模板<>声明
#ifndef _OPERATOR_H_#define _OPERATOR_H_template<typename T>classOperator//运用自己的模板需要重载操作符{public:
T add(T a, T b);
T minus(T a, T b);
T multiply(T a, T b);
T devide(T a, T b);};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>::devide(T a, T b){return a / b;}#endif