Предполагая, что вы на самом деле спрашиваете, что это означает в этом контексте :
Это означает, что функтор (т. Е. Экземпляр класса, реализующий оператор ()
) может хранить и получать доступ информация, относящаяся к его конкретному экземпляру.
Обычная функция может получить доступ только к тем параметрам, которые переданы в нее, плюс глобальные переменные и т. д. c.
Однако пример с функтором:
#include <iostream>
struct Counter {
int operator()() { return ++count; }
private:
int count = 0;
};
Counter count1;
Counter count2;
std::cout << count1() << std::endl; // 1
std::cout << count1() << std::endl; // 2
std::cout << count1() << std::endl; // 3
std::cout << count2() << std::endl; // 1
std::cout << count2() << std::endl; // 2
std::cout << count2() << std::endl; // 3
std::cout << count1() << std::endl; // 4
std::cout << count2() << std::endl; // 4
Здесь фактический счетчик инкапсулирован в экземпляре функтора - это состояние функтора .