operator()
- оператор вызова функции. Это позволяет вам использовать экземпляр класса как функцию:
Classname instance;
instance(); //Will call the overload of operator() that takes no parameters.
Это полезно для функторов и различных других техник C ++. По сути, вы можете передать «объект функции». Это просто объект с перегрузкой operator()
. Таким образом, вы передаете его в шаблон функции, который затем вызывает его как функцию. Например, если определено Classname::operator()(int)
:
std::vector<int> someIntegers;
//Fill in list.
Classname instance;
std::for_each(someIntegers.begin(), someIntegers.end(), instance);
Это вызовет instance
'operator()(int)
member для каждого целого числа в списке. Вы можете иметь переменные-члены в объекте instance
, чтобы operator()(int)
мог выполнять любую необходимую вам обработку. Это более гибко, чем передача необработанной функции, поскольку эти переменные-члены являются неглобальными данными.