Heim >Backend-Entwicklung >C++ >Wie funktionieren die Pointer-to-Member-Operatoren „->*' und „.*' von C?
*` und `.*` Zeiger-zu-Member-Operatoren funktionieren? " />
Zeiger-zu-Member-Operatoren verstehen -> und . in C
Trotz vorhandener Dokumentation die Bedeutung von Zeigern verstehen -to-member-Operatoren -> und . in C können schwer fassbar sein. Dieser Artikel zielt darauf ab ihre Funktionalität und ihre Anwendung in verschiedenen Szenarien verdeutlichen.
Was sind -> und .?
Es werden Zeiger-zu-Mitglieds-Operatoren verwendet um indirekt über Zeiger oder Verweise auf Objekte auf Mitgliedsfunktionen zuzugreifen. -> dereferenziert einen Mitgliedsfunktionszeiger, um eine Mitgliedsfunktion des referenzierten Objekts aufzurufen. . dereferenziert einen Mitgliedszeiger, um eine Mitgliedsfunktion des gezeigten Objekts aufzurufen.
Wann sind -> und . zu verwenden?
X* px = new X; pointer somePointer = &X::f; (px->*somePointer)(); // Calls px->f()
X& rx = x; pointer somePointer = &X::f; (rx.*somePointer)(); // Calls rx.f()
Beispiel
Betrachten Sie den folgenden Code:
struct X { void f() {} void g() {} }; int main() { X x; void (X::*pointer)() = &X::f; // Call x.f() using .* (x.*pointer)(); X* px = new X; // Call px->f() using ->* (px->*pointer)(); return 0; }
In diesem Beispiel dereferenziert der Zeiger den Mitgliedsfunktionszeiger &X::f und weist ihn dem Zeiger zu. Dann wird . auf x verwendet, um x.f() aufzurufen, und -> wird auf px verwendet, um px->f() aufzurufen.
Durch das Verständnis des Unterschieds zwischen -> ; und . und wenn jede davon geeignet ist, können Entwickler Member-Funktionszeiger und indirekte Funktionsaufrufe in C effektiv verarbeiten.
Das obige ist der detaillierte Inhalt vonWie funktionieren die Pointer-to-Member-Operatoren „->*' und „.*' von C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!