Heim >Backend-Entwicklung >C++ >Wie geht „std::bind' mit Mitgliedsfunktionen in C um?

Wie geht „std::bind' mit Mitgliedsfunktionen in C um?

Linda Hamilton
Linda HamiltonOriginal
2024-10-29 08:17:301001Durchsuche

How does `std::bind` handle member functions in C  ?

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!

Stellungnahme:
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