在C++中,函数对象(也称为仿函数或functor)是一种可以像函数一样被调用的对象。它们可以通过成员变量来管理状态。下面是一个简单的例子,展示了如何在C++函数对象中管理状态:
#include <iostream>
// 定义一个带状态的函数对象
class Counter {
public:
Counter() : count(0) {} // 构造函数初始化状态
// 重载()运算符,使其可以像函数一样被调用
int operator()() {
return count++; // 返回当前状态值并递增状态
}
private:
int count; // 状态变量
};
int main() {
Counter counter; // 创建一个Counter对象
std::cout << "Counter(): " << counter() << std::endl; // 输出0
std::cout << "Counter(): " << counter() << std::endl; // 输出1
std::cout << "Counter(): " << counter() << std::endl; // 输出2
return 0;
}
在这个例子中,我们定义了一个名为Counter
的函数对象,它包含一个名为count
的状态变量。我们在构造函数中初始化状态,并重载()
运算符以便像函数一样调用它。每次调用operator()
时,它都会返回当前状态值并递增状态。
这只是一个简单的例子,实际上你可以根据需要管理更复杂的状态。你可以在函数对象中添加更多的成员变量和方法来实现更高级的功能。