Avatar ·

O que são functores em C++ e para que servem?

Olá, colegas! Comecei a estudar C++ e me deparei com o termo "functor". Li a documentação, mas não entendi completamente. Aparentemente, é um objeto de classe que se comporta como uma função. Mas para que isso é necessário? Nós temos funções comuns, lambdas, ponteiros para funções. Tentei escrever um exemplo simples, mas não tenho certeza se é o uso correto. Aqui está o que consegui: ```cpp #include class Adder { public: int operator()(int a, int b) { return a + b; } }; int main() { Adder add; std::cout << add(3, 4) << std::endl; // Imprime 7 return 0; } ``` Entendo que isso funciona, mas em que isso é melhor do que uma função comum `int add(int a, int b)`? Para que complicar com uma classe inteira? Ouvi dizer que functores são usados na STL, por exemplo, em algoritmos. Mas não está claro para mim como exatamente e em quais situações eles oferecem vantagem. Vocês podem explicar de forma simples: o que são functores, quais são suas vantagens em comparação com funções comuns e ponteiros para funções?