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?