#include<iostream.h>
/*类模板*/
template<class T>
class Sum
{
T res;
public:
Sum(T i=0):res(i){}
T operator()(T x){
res+=x;
return res;
}
};
template<class FuncObject,class T>
T Func1(FuncObject fob,const T &val){
return fob(val);
}
template<class FuncObject,class T>
T Func2(FuncObject &fob,const T &val){
return fob(val);
}
int main()
{
Sum<int> sum1(10);
Sum<int> sum2(10);
int i=5, j=10;
cout<<sum1(j)<<'\t'<<sum1(i)<<endl;//输出结果为:25 15
cout<<sum2(j)<<'\t';//输出结果为:20
cout<<sum2(i)<<endl;//输出结果为:25
return 0;
}
输出结果:
[align=center][img]http://dl.iteye.com/upload/attachment/148305/3353cd8c-cc13-32a7-9833-f97cad512ad6.jpg[/img][/align]
cou<<函数1<<函数2;
先算函数2,再函数1。