函数对象:
重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象。一个类对象,表现出一个函数的特征,就是通过“对象名+(参数列表)”的方式使用一个类对象,如果没有上下文,完全可以把它看作一个函数对待。
这是通过重载类的operator()来实现的。
“在标准库中,函数对象被广泛地使用以获得弹性”,标准库中的很多算法都可以使用函数对象或者函数来作为自定的回调行为;
谓词:
一元函数对象:函数参数1个;
二元函数对象:函数参数2个;
一元谓词 函数参数1个,函数返回值是bool类型,可以作为一个判断式
谓词可以是一个仿函数,也可以是一个回调函数。
二元谓词 函数参数2个,函数返回值是bool类型
#include <iostream>
using namespace std;
template <class T>
class Test
{
private:
T t;
public:
Test(T t)
{
this->t = t;
}
~Test()
{
}
void operator()(T& t1) //重载 ()
{
cout << "you are beautiful" << endl;
}
void operator()(T& t1, T& t2) //重载 ()
{
cout << "you are welcome!" << endl;
}
};
void func1()
{
Test<int> t(1);
int a = 2;
int b = 3;
t(a); //t(a) 是一个对象 一元谓词
t(a, b); //二元谓词
}
int main()
{
func1();
return 0;
}