仿函数原理
约 490 字大约 2 分钟
2025-06-21
1.仿函数概念
仿函数(Functor)是指可以像函数一样被调用的对象,因此有一个很明显的特征就是会重载()符号,从而使对象具有了函数的行为。
使用仿函数可以将对象作为函数一样进行调用,这种调用行为类似于函数调用。可以像调用函数一样使用参数传递给仿函数,并获取返回值。
这使得对象具备了函数的功能,可以方便地实现自定义的操作或算法。
2.仿函数代码
#include <iostream>
// 定义一个仿函数
struct Adder
{
int operator()(int a, int b) const
{
return a + b;
}
};
int main() {
//创建一个仿函数对象
Adder add;
//使用仿函数进行调用,类似于函数调用
int result = add(3, 5);//单看这一行您可能会认为这里调用了一个函数,实际上这是一个对象
std::cout << "Result: " << result << std::endl;
return 0;
}在上述示例中,我们定义了一个名为 Adder{} 的仿函数结构体,重载了 operator() 函数。这个仿函数接受两个整数作为参数,并返回它们的和。
在 main() 函数中,我们创建了一个 Adder 对象 add,并使用它来执行加法操作。
3.仿函数作用
通过仿函数的使用,我们可以将对象看作是函数并进行调用,这在某些情况下可以提供更灵活和可定制的行为,好处是能更好做类型,替代C的函数回调行为(C使用函数指针来回调函数)例如:c的qsort()一般使用函数指针,但是C++的sort()更多使用仿函数。但是目前我们还没有办法更加深入体会,随着后续各种容器的使用您才可以体验到仿函数的作用。
更新日志
2025/11/24 07:31
查看所有更新日志