C++仿函数
时间: 2023-07-11 17:05:42 浏览: 144
C++中的仿函数是重载了函数调用运算符(operator())的类,它可以像函数一样被调用。仿函数通常用于泛型编程,可以以不同的方式对数据进行处理。
下面是一个简单的例子,演示了如何定义一个加法仿函数:
```c++
class Add {
public:
int operator()(int a, int b) const {
return a + b;
}
};
```
在这个例子中,Add类定义了一个operator()函数,它的参数是两个整数,返回值也是一个整数。当我们创建一个Add对象并像函数一样调用它时,它会将两个参数相加并返回结果:
```c++
Add add;
int result = add(2, 3); // result = 5
```
仿函数还可以有自己的成员变量和构造函数,这使得它更加灵活和可定制化。例如,我们可以定义一个带有一个常量因子的乘法仿函数:
```c++
class Multiply {
public:
Multiply(int factor) : m_factor(factor) {}
int operator()(int a, int b) const {
return a * b * m_factor;
}
private:
int m_factor;
};
```
在这个例子中,Multiply类定义了一个构造函数,它将一个整数因子存储在成员变量m_factor中。operator()函数根据这个因子将两个整数相乘,并返回结果。我们可以创建一个Multiply对象,并在调用它时传递一个常量因子:
```c++
Multiply multiply(2);
int result = multiply(2, 3); // result = 12
```
阅读全文