Существует множество вариантов использования для функторов, которые не возвращают значения (так же, как существует множество вариантов использования для функций, которые не возвращают значения). Первое, что приходит мне на ум, - кнопка в графическом интерфейсе пользователя (GUI). Как правило, структура GUI определяет способ назначения обратного вызова, который будет вызываться при нажатии кнопки. В рамках, на которые я смотрел, этот обратный вызов ничего не возвращает - ни через возвращаемое значение, ни через выходной параметр. Если каркас был написан для C, обратный вызов, вероятно, предоставляется как указатель на функцию. Если каркас был написан для C ++, обратный вызов, вероятно, предоставляется как функциональный объект (функтор) для большей гибкости.
Например, gtkmm использует обратные вызовы в виде sigc::slot
объектов , Документация подтверждает, что это "функторы": "Слот - это объект, который выглядит и ощущается как функция, но на самом деле является объектом. Они также известны как объекты функций или функторы. " Для указанного c случая нажатия кнопки слот должен соответствовать прототипу для Gtk::Button::signal_clicked()
, который равен void function_name()
. То есть, чтобы ваша кнопка что-то сделала, вы используете функтор, который не принимает параметров и возвращает void
. Полезно.