Зачем переопределять оператор ()? - PullRequest
47 голосов
/ 25 ноября 2008

В библиотеке Boost Signals они перегружают оператор ().

Это соглашение в C ++? Для обратных вызовов и т. Д.? 1005 *

Я видел это в коде сотрудника (который является большим фанатом Boost). Из всего Буста, это привело меня в замешательство.

Есть какое-нибудь понимание причины этой перегрузки?

Ответы [ 11 ]

1 голос
/ 25 ноября 2008

Другой сотрудник отметил, что это может быть способ маскировать функторные объекты как функции. Например, это:

my_functor();

Это действительно:

my_functor.operator()();

Так значит ли это:

my_functor(int n, float f){ ... };

Может также использоваться для перегрузки?

my_functor.operator()(int n, float f){ ... };
...