Heim > Backend-Entwicklung > C++ > Wie verbessern Rückrufe die Flexibilität und Anpassung in C?

Wie verbessern Rückrufe die Flexibilität und Anpassung in C?

Mary-Kate Olsen
Freigeben: 2024-12-29 01:41:11
Original
666 Leute haben es durchsucht

How Do Callbacks Enhance Flexibility and Customization in C  ?

Rückrufe in C

Ein Rückruf ist ein aufrufbares Objekt, das als Argument an eine Funktion oder Klasse übergeben wird , was eine Anpassung des Verhaltens basierend auf der spezifischen Rückruffunktion ermöglicht.

Gründe für die Verwendung Rückrufe:

  • Schreiben von generischem Code, der mit unterschiedlicher durch den Rückruf bereitgestellter Logik arbeiten kann
  • Benachrichtigung von Anrufern über bestimmte Ereignisse, Bereitstellung von Flexibilität zur Laufzeit
  • Aktivierung dynamisches Verhalten zur Laufzeit

Callables in C 11:

  • Funktionszeiger (einschließlich Zeiger auf Mitgliedsfunktionen)
  • std::function Objects
  • Lambda-Ausdrücke
  • Bindungsausdrücke
  • Funktionsobjekte (Klassen mit überladenem Funktionsaufruf Operator())

Funktionszeiger schreiben:

int (*)(int); // Function pointer type taking one int argument, returning int
int (* foo_p)(int) = &foo; // Initialize pointer to function foo
Nach dem Login kopieren

Aufrufnotation:

int foobar(int x, int (*moo)(int));
foobar(a, &foo); // Call foobar with pointer to foo as callback
Nach dem Login kopieren

std::function Objekte:

std::function<int(int)> stdf_foo = &amp;foo;
Nach dem Login kopieren

Anrufnotation:

int stdf_foobar(int x, std::function<int(int)> moo);
stdf_foobar(a, stdf_foo);
Nach dem Login kopieren

Lambda-Ausdrücke:

stdf_foobar(a, [c](int x) -> int { return 7+c*x; });
Nach dem Login kopieren

std::bind Ausdrücke:

int nine_x_and_y (int x, int y) { return 9*x + y; }
stdf_foobar(a, std::bind(nine_x_and_y, _1, 3));
Nach dem Login kopieren

Templatete Rückrufe:

template<class R, class T>
void stdf_transform_every_int_templ(int * v,
  unsigned const n, std::function<R(T)> fp) {...}
Nach dem Login kopieren

Anrufnotation:

stdf_transform_every_int_templ<int,int&amp;>(&amp;a[0], 5, &amp;woof);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie verbessern Rückrufe die Flexibilität und Anpassung in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage