Heim >Backend-Entwicklung >C++ >C-Member-Funktionszeiger: Wann sollte „->*' vs. „.' verwendet werden?
*` vs. `.`? " />
Member-Funktionszeiger in C: >* und .
Viele Programmierer finden die Zeiger-auf-Member-Operatoren > und . in C verwirrend. Dieser Artikel erklärt ihre Verwendung und wann sie im Vergleich zu den herkömmlichen > und ..
verstehen ; und .
sind Zeiger-zu-Member-Operatoren, die Ihnen den Zugriff auf Memberfunktionen über Zeiger ermöglichen. Diese Operatoren werden verwendet, wenn Sie eine Memberfunktion dynamisch an ein Objekt binden müssen.>*:
Betrachten Sie die folgende Klasse:
Um einen Zeiger auf die Mitgliedsfunktion f zu erstellen, können wir typedef:
struct X { void f() {} void g() {} };
Jetzt können wir f dem Zeiger somePointer:
typedef void (X::*pointer)();
Um das Mitglied aufzurufen, zuweisen Funktion mit dem Zeiger benötigen wir ein Objekt:
pointer somePointer = &X::f;
Wenn x ein Zeiger auf ein Objekt ist, müssen wir stattdessen >* verwenden:
X x; (x.*somePointer)(); // Calls x.f()Verwendung Szenarien:
X* px = new X; (px ->* somePointer)(); // Calls px->f()
Normalerweise müssen Sie > und .
in Szenarien verwenden, in denen Sie Mitgliedsfunktionen als Argumente an Funktionen übergeben oder sie in Containern speichern müssen. Diese Operatoren bieten eine Möglichkeit, den Funktionsaufruf von der spezifischen Objektinstanz zu entkoppeln.Fazit:
Die Zeiger-auf-Member-Operatoren > und .
in C gibt es leistungsstarke Tools, die eine dynamische Funktionsbindung ermöglichen. Indem wir ihre Verwendung verstehen und wissen, wann sie anstelle der traditionellen > und ., Sie können die Flexibilität und Wiederverwendbarkeit Ihres Codes verbessern.Das obige ist der detaillierte Inhalt vonC-Member-Funktionszeiger: Wann sollte „->*' vs. „.' verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!