C++ 中的函子
Muhammad Husnain
2023年1月30日
2022年6月15日
这个简单的教程介绍了函子及其在 C++ 编程语言中的使用。首先,本文将简要介绍函子,然后介绍其语法和可用性。
C++ 中的函子简介
函子是可以表现得像函数的类对象。C++ 标准模板库 (STL) 中有许多可用的仿函数,你也可以制作自己的仿函数。
函子的主要优点是虽然它们不是函数,但它们仍然可以保存状态,因为它们是类对象。
函子是通过在任何类中重载运算符 ()
来创建的,以便可以调用该类的对象,就像我们称为简单函数一样。
让我们看一下下面的例子有一个清晰的认识。
class Hello{
public:
void operator()() {
cout<<"Hello from Functor"<<endl;
}
};
现在要使用它,我们将创建一个 Hello
类的对象并像这样调用它:
int main()
{
Hello hello;
hello();
return 0;
}
输出:
Hello from Functor
我们可以从输出中看到,当我们将对象与运算符一起使用时,会调用函数调用运算符 ()
。
C++ 中带参数的函子
函子也可以定义为具有一些参数和返回类型,就像函数一样。我们可以修改之前的函子以在其中包含参数。
class Hello{
public:
void operator()(string name) {
cout<<"Hello "<<name<<" from Functor"<<endl;
}
};
要调用它,我们还需要传递参数。
int main()
{
Hello hello;
hello("david");
return 0;
}
输出:
Hello david from Functor
C++ 中的预定义函子
许多函子包含在 C++ 标准模板库中打包的 功能
头文件中。其中一些在这里讨论。
函子名称 | 描述 |
---|---|
plus |
计算作为参数传递的两个数字的总和。 |
minus |
计算作为参数传递的两个数字之间的差。 |
multiplies |
计算作为参数传递的两个数字的乘积。 |
divides |
计算作为参数传递的两个数字的除法结果。 |
equal_to |
检查传递的两个参数是否相等。 |
not_equal_to |
检查传递的两个参数是否不相等。 |
greater |
检查第一个参数是否大于第二个。 |
less |
检查第一个参数是否小于第二个。 |
Author: Muhammad Husnain
Husnain is a professional Software Engineer and a researcher who loves to learn, build, write, and teach. Having worked various jobs in the IT industry, he especially enjoys finding ways to express complex ideas in simple ways through his content. In his free time, Husnain unwinds by thinking about tech fiction to solve problems around him.
LinkedIn