📄 ex11_6.cpp
字号:
#include<iostream.h>
template<typename T>class Sum{
T res;
public:
Sum(T i=0):res(i){}//构造函数,即sum(T i=0){res=i;}
T operator()(T x){res+=x;return res;}//累加,重载的调用操作符()
T result() const {return res;}//
};
template<typename FuncObject,typename T>
T Func1(FuncObject fob,const T &val){return fob(val);}//不可实现累加
template<typename FuncObject,typename T>
T Func2(FuncObject &fob,const T &val){return fob(val);}//可实现累加
void main(){
Sum<int> sum(10);
int i=5,j=10;
cout<<sum(j)<<'\t';cout<<sum(i)<<endl;// 检测函数对象
cout<<Func1(sum,i)<<'\t';cout<<Func1(sum,j)<<'\t';
cout<<Func1(sum,10)<<endl;//使用函数对象,但未实现累加
cout<<Func2(sum,i)<<'\t';cout<<Func2(sum,j)<<'\t';
cout<<Func2(sum,10)<<endl;//使用函数对象,实现累加
cout<<Func1(Sum<int>(5),i)<<'\t';cout<<Func1(Sum<int>(),j)<<'\t';
cout<<Func1(Sum<int>(),10)<<endl;//函数对象标准用法,未实现累加
cout<<Func2(Sum<int>(5),i)<<'\t';cout<<Func2(Sum<int>(),j)<<'\t';
cout<<Func2(Sum<int>(),10)<<endl;//函数对象标准用法,未实现累加
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -