Que sont les foncteurs en C++ et à quoi servent-ils ?
Bonjour, collègues ! J'ai commencé à étudier le C++ et je suis tombé sur le terme "foncteur". J'ai lu la documentation, mais je n'ai pas tout compris. Apparemment, c'est un objet de classe qui se comporte comme une fonction. Mais pourquoi en avons-nous besoin ? Nous avons déjà des fonctions ordinaires, des lambdas, des pointeurs de fonction.
J'ai essayé d'écrire un exemple simple, mais je ne suis pas sûr que ce soit une utilisation correcte. Voici ce que j'ai obtenu :
```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; // Affiche 7
return 0;
}
```
Je comprends que cela fonctionne, mais en quoi est-ce mieux qu'une fonction ordinaire `int add(int a, int b)` ? Pourquoi construire toute une classe ? J'ai entendu dire que les foncteurs sont utilisés dans la STL, par exemple dans les algorithmes. Mais je ne comprends pas clairement comment et dans quelles situations ils offrent un avantage.
Pouvez-vous expliquer simplement : ce que sont les foncteurs, quels sont leurs avantages par rapport aux fonctions ordinaires et aux pointeurs de fonction ?