Heim >Backend-Entwicklung >C++ >Wie geht „std::bind' mit Mitgliedsfunktionen in C um?
Std::bind mit Memberfunktionen verstehen
std::bind ist ein leistungsstarkes Tool in C zum Erstellen von Funktionsobjekten. Bei Verwendung mit Mitgliedsfunktionen kann es jedoch Fragen aufwerfen.
Referenzierung des ersten Arguments
Das erste Argument für std::bind, wenn es sich um eine Mitgliedsfunktion handelt, ist immer eine Referenz (&). Dies liegt nicht an der Implementierung von std::bind, sondern an der Art der Mitgliedsfunktionen. Mitgliedsfunktionen erfordern ein Objekt, auf das sie zugreifen können. Im Fall von std::bind wird dieses Objekt über die Referenz übergeben.
Zweites Argument als Objektreferenz
Das zweite Argument für std::bind wann Beim Umgang mit Mitgliedsfunktionen wird das Objekt angegeben, das als Kontext für den Funktionsaufruf verwendet werden soll. Da Mitgliedsfunktionen immer an eine bestimmte Klasse gebunden sind, ist es wichtig, eine Instanz dieser Klasse bereitzustellen.
Intern erkennt std::bind das Vorhandensein einer Mitgliedsfunktion und übernimmt automatisch die Erstellung eines aufrufbaren Objekts das das im zweiten Argument angegebene Objekt enthält. Dieses aufrufbare Objekt verwendet die Referenz oder den Zeiger des Objekts als erstes Argument und den Funktionszeiger als zweites.
Beispiel
Betrachten Sie das folgende Beispiel:
<code class="cpp">struct Foo { void print_sum(int n1, int n2) { std::cout << n1 + n2 << '\n'; } int data = 10; }; Foo foo; auto f = std::bind(&Foo::print_sum, &foo, 95, _1); f(5);</code>
In diesem Beispiel ist das zweite Argument für std::bind &foo, das den Verweis auf das foo-Objekt bereitstellt. Das von std::bind erstellte aufrufbare Objekt verwendet &foo als erstes Argument und &Foo::print_sum als zweites.
Das Verständnis dieser Konzepte hilft zu klären, wie std::bind mit Mitgliedsfunktionen funktioniert, und ermöglicht Ihnen eine effektive Nutzung diese Funktion in Ihrem C-Code.
Das obige ist der detaillierte Inhalt vonWie geht „std::bind' mit Mitgliedsfunktionen in C um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!