Подробная разница между вызовом функтора и вызовом функции?

Основная причина, по которой это работает, заключается в том, что for_each () на самом деле не предполагает его третий аргумент - функция. Он просто предполагает, что его третий аргумент - это то, что может быть называется с соответствующим аргументом. А подходящим образом определенный объект также служит как - и часто лучше, чем - функция. Например, легче встроить оператор приложения в class, чем встроить переданную функцию как указатель на функцию. Следовательно, функциональные объекты часто выполнять быстрее, чем обычно функции. Объект класса с оператор приложения (§11.9) называется функциональным объектом, функтор или просто функциональный объект.

[Страуструп, 3-е издание C ++, последний абзац 18.4]

  1. Я всегда думал, что оператор () вызов аналогичен вызову функции во время выполнения. чем это отличается от нормальный вызов функции?

  2. Почему проще встроить оператор приложения, чем обычный функция?

  3. Насколько они быстрее, чем функция call?

13
задан Ramadheer Singh 14 October 2010 в 23:15
поделиться