我试图理解函子的“力量”。
好的,所以它们是指向函数的指针,但是它们能做什么其他没有实现的类operator()
不能做什么?
例如 :
#include <iostream>
#include <assert.h>
#include <vector>
using namespace std;
class MultiplyBy
{
private:
int factor;
public:
MultiplyBy(int x) : factor(x) {}
int operator () (int other) const
{
return factor * other;
}
};
int main()
{
MultiplyBy temp(5);
int myResult = temp(5); // now myResult holds 25
cout << myResult << endl;
return 0;
}
我们带着他的另一个朋友
class MultiplyOther
{
private:
int factor;
public:
MultiplyOther(int x) : factor(x) {}
int invokeMultiplyMe(int _other)
{
return _other * factor;
}
};
并做同样的事情:
int main()
{
// MultiplyOther
MultiplyOther notFunctor(4);
int myOther = notFunctor.invokeMultiplyMe(3);
cout << myOther << endl;
return 0;
}
我们得到:
25
12
那么,函子的真正威力是什么?两个类都保存状态,还是我在这里遗漏了什么?