Maison > développement back-end > C++ > Comment les rappels améliorent-ils la flexibilité et la personnalisation en C ?

Comment les rappels améliorent-ils la flexibilité et la personnalisation en C ?

Mary-Kate Olsen
Libérer: 2024-12-29 01:41:11
original
754 Les gens l'ont consulté

How Do Callbacks Enhance Flexibility and Customization in C  ?

Rappels en C

Un rappel est un objet callable qui est passé en argument à une fonction ou une classe , permettant de personnaliser le comportement en fonction de la fonction de rappel spécifique.

Raisons d'utilisation Rappels :

  • Écriture de code générique pouvant fonctionner avec différentes logiques fournies par le rappel
  • Notification des appelants de certains événements, offrant une flexibilité au moment de l'exécution
  • Activation comportement dynamique pendant l'exécution

Callables en C 11 :

  • Pointeurs de fonction (y compris les pointeurs vers les fonctions membres)
  • std::objets de fonction
  • Expressions lambda
  • Expressions de liaison
  • Objets fonction (classes avec appel de fonction surchargé Operator())

Pointeurs de fonction d'écriture :

int (*)(int); // Function pointer type taking one int argument, returning int
int (* foo_p)(int) = &foo; // Initialize pointer to function foo
Copier après la connexion

Notation d'appel :

int foobar(int x, int (*moo)(int));
foobar(a, &foo); // Call foobar with pointer to foo as callback
Copier après la connexion

std::fonction Objets :

std::function<int(int)> stdf_foo = &amp;foo;
Copier après la connexion

Notation d'appel :

int stdf_foobar(int x, std::function<int(int)> moo);
stdf_foobar(a, stdf_foo);
Copier après la connexion

Expressions lambda :

stdf_foobar(a, [c](int x) -> int { return 7+c*x; });
Copier après la connexion

std::bind Expressions :

int nine_x_and_y (int x, int y) { return 9*x + y; }
stdf_foobar(a, std::bind(nine_x_and_y, _1, 3));
Copier après la connexion

Modèles de rappel :

template<class R, class T>
void stdf_transform_every_int_templ(int * v,
  unsigned const n, std::function<R(T)> fp) {...}
Copier après la connexion

Notation d'appel :

stdf_transform_every_int_templ<int,int&amp;>(&amp;a[0], 5, &amp;woof);
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal