让我们看一个简单的函子
class LessThan {
public:
explicit LessThan (int in ) : val(in) {}
bool operator() (int param) const {
return param < val;
}
private:
int val;
};
例如,我可以像这样使用 -
vector<int> myVector = factory();
size_t count = count_if(begin(myVector), end(myVector), LessThan(10));
我对仿函数术语的理解是,类LessThan
是仿函数。即它是一个类型,而不是一个对象。即它是抽象的,而不是具体的。
那么,我们叫LessThan(10)
什么?在这里,我们通过实例化LessThan
函子类型来创建一个对象。那么,我们称它为仿函数对象吗?但是,函子是函数对象。那么,LessThan(10)
函数对象是对象吗??
这不是很荒谬吗?