空函子是否有任何益处/用途?

问题描述 投票:-2回答:1

返回值类型为void的函子有没有用?

我能想到的唯一用途是非恒定引用传入的参数对参数进行某种操作,然后将其返回给调用程序。但是在这种情况下,正常功能似乎更好(我应该说更简洁)。

使用void仿函数有什么好处?

c++ void functor
1个回答
0
投票

[]有很多不返回值的函子用途(就像不返回值的函数有许多用途一样)。我首先想到的是图形用户界面(GUI)中的按钮。通常,GUI框架定义一种指定单击按钮时要调用的回调的方法。在我所研究的框架中,此回调不返回任何内容-既不通过返回值也不通过输出参数。如果框架是为C编写的,则回调可能作为函数指针提供。如果该框架是为C ++编写的,则回调可能作为函数对象(函数器)提供,以提供更大的灵活性。

例如,使用sigc::slot对象形式的回调。 The documentation确认它们是“函子”:“插槽是一个看起来和感觉像函数的对象,但实际上是一个对象。也称为函数对象或函子。”

对于特定对象如果单击按钮,则插槽必须与Gtk::Button::signal_clicked()的原型匹配,碰巧是Gtk::Button::signal_clicked()。也就是说,要使按钮执行某项操作,请使用不带参数且返回void function_name()的仿函数。有用。
© www.soinside.com 2019 - 2024. All rights reserved.