在C++中,仿函数不是一个函数,是一个类,这个类实现了函数的功能。
如果我想实现一个求和的功能:定义一个Sum类,让其中的()函数实现这个功能,代码如下:
class Sum {
public:
Sum() = default;
virtual ~Sum() {}
int operator()(const vector<int>& nums) {
long sum = 0;
for (auto& item : nums) {
sum += item;
}
return sum;
}
Sum(const Sum& src) = delete;
Sum& operator=(const Sum& src) = delete;
};
int main() {
vector<int> v{2, 3, 4, 10};
Sum s;
int sum = s(v);
std::cout << "sum =" << sum << std::endl;
return 0;
}
结果如下: