Question

Quelle est la moyenne des délégués en C ++, fait fonction de tri en c / c ++ qui prend une fonction de comparaison / foncteur en tant que dernier paramètre est une forme de délégué?

Était-ce utile?

La solution

« Délégué »

est pas vraiment une partie de la terminologie de la C. En C #, il est quelque chose comme un pointeur de fonction glorifiée qui permet de stocker l'adresse d'un objet et d'invoquer les fonctions membres. Vous pouvez certainement écrire quelque chose comme ça en C ++ comme une petite fonction de bibliothèque. Ou encore plus générique. Combine boost::bind<> avec boost::function<>

En C ++, nous utilisons le terme « objet de fonction ». Un objet de la fonction est tout (y compris des pointeurs de fonction) qui est « appelable » via l'opérateur d'appel de fonction ().

std :: sort prend un « prédicat » qui est un objet de fonction spéciale qui ne modifie pas ses arguments et renvoie une valeur booléenne.

Autres conseils

Fonctions de rappel en C ++ peuvent être (vaguement) appelé comme une forme de delegates (si terme delegate n'est pas utilisé pour cela). Les fonctions de rappel utilisent Pointeurs de fonctions pour les transmettre en tant que paramètres à d'autres fonctions. Mais les délégués en C # est plus avancée par rapport aux fonctions de rappel en C ++.

Pour déléguer le travail signifie partager la charge de travail avec les autres. Dans la vraie vie, si vous deviez déléguer votre tâche, à savoir si vous êtes un gestionnaire, vous partagerez votre travail attend les autres pour accomplir une tâche sans avoir à savoir comment.

Le concept est le même en C ++ et d'autres langues ayant la capacité des délégués. En C, vous pouvez le voir en tant que délégué:

int calculate(int (*func)(int c), int a, int b)

Parce que vous êtes censé envoyer un pointeur, à une autre fonction qui calcule un travail pour vous. J'ai écrit récemment billet de blog sur les pointeurs de fonction en Python et C, vérifier, vous pouvez le trouver utile. Cela pourrait ne pas être la manière « traditionnelle » de déléguer le travail en C ou C ++, mais là encore, le termonoligy dit que je suis un peu à droite.

Délégation est principalement utilisé comme un moyen de transmettre des fonctions aux fonctionnalités intégrées dans une classe (Pimpl, l'agrégation, l'héritage privé). Ils sont principalement des fonctions (inline) d'une ligne, d'appeler des fonctions de membres classes. Pour autant que je sache, il n'a rien à voir avec les délégués de C #.

Dans ce sens, une fonction pointeur utilisé dans qsort n'est pas un délégué, mais un rappel dans lequel les modules cadres peuvent être étendus par logiciel utilisateur comme dans le Hollywood principe .

délégué : un objet qui agit comme un pointeur multi-fonctions avec un système d'abonnement. Il simplifie vraiment l'utilisation de pointeurs fonction de membre statique ou « objet » pour les notifications de rappel et la gestion des événements.

Ce lien explique les délégués dans un de manière lucide ou vous pouvez également consulter le MSDN lien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top