实验一:
#include <iostream>
using namespace std;
class Test{
public:
int operator() (int a, int b){
cout << "operator() called. " << a << ' ' << b << endl;
return a + b;
}
};
int main(){
Test sum;
int s = sum(3, 4); // sum 对象看上去像是一个函数,故也称“函数对象”
cout << "a + b = " << s << endl;
return 0;
}
实验二:
#include <iostream>
using namespace std;
class Less{
int thres_; // thres = threshold “门槛”
public:
Less(int th): thres_(th) {} // 构造函数(为空),初始化列表
bool operator() (int); //函数运算符重载声明
};
bool Less::operator() (int value){ //函数运算符重载定义
return (value < thres_);
}
void Filter(int* array, int num, Less fn){ // filter “过滤器”
for(int i = 0; i < num; i++)
if(fn(array[i])) cout << array[i] << ' ';
cout << endl;
}
int main(){
int array[5] = {1, -4, 10, 0, -1};
int thres;
cout << "thres: ";
cin >> thres;
Less less_than(thres);
Filter(array, 5, less_than);
return 0;
}