仿函数(函数对象)
什么是仿函数
仿函数,或称为函数对象,在C++中是通过重载operator()
的类实例,使得类的实例能够像函数一样被调用。
可调用对象
-
函数指针(Function Pointers): 这是指向函数的指针,可以像使用函数一样调用。
-
仿函数(Functors): 如上所述,它们是重载了
operator()
方法的类的实例。 -
Lambda表达式(Lambdas): C++11引入的一种便捷的定义匿名函数对象的方法。
-
成员函数指针(Member Function Pointers): 指向类成员函数的指针,需要一个对象实例来调用。
-
标准库提供的功能对象(Standard Library Functional Objects): 如
std::function
,它可以包装其他可调用对象,比如函数指针、仿函数、lambda表达式等。
每种类型的可调用对象都有自己的用途和优势。例如:
- 函数指针简单易用,适合指向静态全局函数。
- 仿函数可以维护状态,并且可以有多个重载的
operator()
,从而接受不同的参数列表。 - Lambda表达式通常用于定义简短的内联可调用代码,特别是在需要