仿函数

仿函数

仿函数由来

我们都知道,函数的入参除了是普通变量之外,还可以是函数指针(C 语言中就经常这么用)。那有没有什么手段能代替函数指针呢?答案是有。

  • 定义一个类,类里面定义了某个方法,将该类的对象作为函数的入参,那么在函数中就能调用这个类中的方法

还有更简单的方法吗?答案还是有。

  • 定义一个类,类里面重载函数运算符(),将该类的对象作为函数的入参,那么在函数中同样能调用重载符()里面的方法

所以说,仿函数就是仿造的函数,它并不是一个真正意义上的函数。它是一个类中的运算符()重载,但它具有函数的功能。

#include <iostream>

class Compare {
private:
int m_Number;
public:
Compare(int num) : m_Number(num){}

bool operator()(int other)
{
return m_Number > other;
}

};

int main()
{
Compare cmp(10);
std::cout << cmp(11) << std::endl;
std::cout << cmp(9) << std::endl;
std::cin.get();
return 0;
}

更多用法:(19条消息) C++中的仿函数有点难,这篇文章却讲的通俗易懂!_ISmileLi的博客-CSDN博客_仿函数的作用