在C++中,函数对象(也称为仿函数或functor)是一个类或结构体,它重载了operator()
运算符,从而使其对象可以像函数一样被调用。函数对象通常用于STL(Standard Template Library)算法中,作为传递的可调用实体。
以下是定义一个简单的C++函数对象的基本步骤:
- 定义一个类或结构体。
- 在类或结构体中重载
operator()
运算符。 - (可选)为函数对象提供其他成员函数和成员变量。
下面是一个简单的C++函数对象示例,该对象用于计算两个整数的和:
#include
// 定义一个函数对象
struct Sum {
int operator()(int a, int b) const {
return a + b;
}
};
int main() {
Sum sumObj;
int result = sumObj(3, 4); // 调用函数对象,相当于调用sumObj(3, 4)
std::cout << "The sum is: " << result << std::endl;
return 0;
}
在这个例子中,我们定义了一个名为Sum
的结构体,并重载了operator()
运算符,使其接受两个整数参数并返回它们的和。然后,在main
函数中,我们创建了一个Sum
对象sumObj
,并通过调用该对象来计算两个整数的和。
函数对象通常比普通函数更灵活,因为它们可以拥有状态(通过成员变量)并且可以被定制(通过重载其他成员函数)。此外,由于函数对象是类或结构体,因此它们可以使用继承和多态性。