C++函子用法:什么是C++中的函子?如何使用函子?

2021年11月9日22:22:17 发表评论 1,012 次浏览

什么是C++中的函子?函子这个词在 C++ 中非常有名。函子很像一个行为类似于函数或方法的类。它会让你制作一些类似于函数的对象,并且可以使用operator()。简单来说,函子是那些可以用作函数或类似的对象。当用户想要在函数中传递 1 个以上的参数而该函数不允许时,这些很有用。今天,我们将学习 Ubuntu 20.04 中 C++ 中的函子,并结合一些C++函子用法示例如何使用C++函子?首先在 Ubuntu 4desktop 上使用“Ctrl+Alt+T”快捷键打开 shell 终端。

示例 01:

让我们通过在 shell 中创建一个新的 C++ 文件来开始我们的第一个示例。众所周知的命令“touch”将用于此目的。制作 C++ 文件后,你需要一个编辑器来打开它。“Gnu Nano”编辑器是最值得推荐的一款。因此,我们一直使用“nano”编辑器打开它并在其中创建 C++ 代码。

打开文件后,通过在其顶部包含“输入-输出”流标头来启动你的代码。已给出标准命名空间;“Func”类已经开始。在这个类中已经实现了operator(),它看起来像一个函数,但它是对函子operator()的调用。这个运算符看起来像是接受两个参数,如果“x”大于“y”,则返回 true 或 false 到 main 方法。main 方法定义了三个整数类型变量,整数值初始化为“x”和“y”。

另一个整数变量“res”被声明为从函子获取返回值。这个“f(x,y)”看起来像是一个函数调用,但实际上不是。此语法在此处用于调用函子的 operator()。如果变量“x”大于“y”,则返回1;否则,变量“res”为 0。这里使用了“cout”语句来打印结果值。

C++函子用法:什么是C++中的函子?如何使用函子?

C++函子用法示例:使用“Ctrl+S”保存代码后,使用“Ctrl+X”快捷键保留代码。现在,是时候编译 C++ 代码了。对于编译,请确保你已经在 Ubuntu 20.04 系统上配置了 g++ 编译器。因此,这里使用 g++ 命令来编译“functor.cc”文件。在此之后,“./a.out”已被用于执行文件。执行结果显示“1”。这意味着变量“x”大于变量“y”。

C++函子用法:什么是C++中的函子?如何使用函子?

让我们更新我们的 C++ 代码。使用 shell 上的 nano 编辑器打开相同的文件,如下所示。你唯一需要做的更改是将 operator() 中的“大于”符号替换为“小于”符号。其余代码将保持不变。保存更新的文件并在连续使用“Ctrl+S”和“Ctrl+X”的同时保留它。

C++函子用法:什么是C++中的函子?如何使用函子?

保存文件后,必须再次编译代码。因此,再次使用 g++ 编译器命令来执行此操作。编译后,这个新更新的文件的执行返回0,因为变量“x”不小于变量“y”,即13和6。

C++函子用法:什么是C++中的函子?如何使用函子?

如何使用C++函子?假设你想在不使用某个函数的情况下将两个整数相加。函子在这里为你提供帮助。它可以使用其中的加号运算符来执行此操作。因此,在编辑器中打开 C++ 文件“functor.cc”,即 GNU Nano,再次更新其代码。“纳米”命令将用于此目的。打开此文件后,让我们在之前完成的同一位置进行更新。我们在变量之间用“加”号代替了“小于”号。这是将两个变量值相加,并将这个值返回给对象调用。

函数调用会将这个值保存到另一个变量“res”中,并在“cout”子句的帮助下将其显示在 shell 上。相同的代码将用于使用“-”符号进行减法。再次按“Ctrl+S”保存你的代码。现在,使用“Ctrl+X”返回 shell 终端。

C++函子用法:什么是C++中的函子?如何使用函子?
什么是C++中的函子?

退出 C++ 文件后,使用 g++ 编译器和 C++ 文件的名称再次编译其中的新代码,即 functor.cc,如下所示。编译后,在“./a.out”指令的帮助下运行更新的代码文件,如下图所示。由于两个整数类型值(即 13 和 6)的总和,输出显示值 19。

C++函子用法:什么是C++中的函子?如何使用函子?

C++函子用法示例 02:

让我们用一个新的例子来说明函子对象的功能。在“touch”指令的帮助下,创建一个新的 C++ 文件或使用旧文件,即 functor.cc。使用“nano”指令在 GNU Nano 编辑器中打开创建的文件,如本文开头的图片所示。现在,在文件的最顶部添加输入输出流的头文件。必须使用关键字“using”声明标准命名空间。已声明类“Func”,其中包含公共类型对象。第一个是名为“Func”的构造函数,在其参数中采用整数类型参数。这个整数类型的参数值将在“_a”和“(a)”的帮助下保存到变量“a”中。这个构造函数并没有做更多的事情。

在此之后,这里使用函子的运算符来减去两个整数类型的值。“Func”类定义了私有数据类型变量“_a”。主要方法来了。首先,我们创建了一个类“Func”的对象“f1”,并传递给它一个整数类型的值,即“13”。现在,在创建此对象“f1”之后,将执行类“Func”的构造函数“Func”并将值 13 保存到整数变量“_a”中。此后,这里使用了“cout”语句来显示类的对象。没有什么可混淆的。

当对象被调用时,这意味着在这里调用函子 operator() 并赋值为“6”。通过这个,函子使用operator()来计算两个变量的减法并将其返回给主程序。让我们保存代码文件,然后退出。在这里使用“Ctrl+S”和“Ctrl+X”。

C++函子用法:什么是C++中的函子?如何使用函子?
C++函子用法示例

现在C++ functor.cc文件的代码已经保存了;在执行之前先编译它。使用相同的“g++”编译器命令使其无错误。编译成功,我们进入了执行阶段。使用“./a.out”命令执行此文件时,我们得到了 7 作为减法结果。

C++函子用法:什么是C++中的函子?如何使用函子?

如何使用C++函子?总结

什么是C++中的函子?所以,这就是在 Ubuntu 20.04 系统上工作时在 C++ 中使用函子的全部内容。在上面的C++函子用法示例中,我们已经使用了 operator() 来调用函子。我们还看到了如何在 C++ 中使用 Class 及其对象来使用 Functor。我们相信所有的例子都很容易做,并且可以帮助你在 Ubuntu 20.04 Linux 系统中轻松理解 Functors 的概念。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: