Les Functors en C++
Qu'est-ce qu'un Functor ?
Un functor est un type de structure de données ou d'objet qui peut être utilisé comme une fonction. Cela est possible grâce à la surcharge de l'opérateur de fonction d'appel (()). Pour que cet opérateur puisse fonctionner, il est nécessaire de s'assurer que l'accès public est accordé à sa surcharge. Les functors peuvent contribuer à simplifier certaines tâches et améliorer l'efficacité dans divers scénarios.
Syntaxe des Functors
Pour qu'une classe soit qualifiée de functor, elle doit contenir la structure suivante :
class MaClasse {
public:
type operator()(...) {
// Corps de la fonction
}
};
Ici, type représente le type de données à retourner, operator() surcharge l'opérateur de fonction d'appel () et (...) désigne les paramètres nécessaires pour exécuter le corps de la fonction.
Utilisation d'un Functor
Pour faire appel à un functor, on commence par créer une instance de la classe correspondante, puis on l'utilise avec les arguments requis :
MaClasse maClasse;
maClasse(...);
Exemple de Functor
Considérons le code suivant, qui surcharge l'opérateur de fonction d'appel de la classe Bonjour pour afficher Bonjour le monde ! un nombre d'itérations défini par l'argument (int fois). Ce code illustre comment créer un functor à partir d'une telle classe :
#include
using namespace std;
class Bonjour {
public:
void operator()(int fois) {
for (int i = 1; i <= fois; i++)
cout << "Bonjour le monde !" << endl;
}
};
int main() {
Bonjour salute;
salute(3);
return 0;
}
L'exécution de ce programme produira la sortie suivante :
Bonjour le monde !
Bonjour le monde !
Bonjour le monde !