Heim >Backend-Entwicklung >C++ >Was ist der Unterschied zwischen den Pointer-to-Member-Operatoren „->*' und „.*' von C?
*` und `.*` Zeiger-zu-Member-Operatoren? " />
Obwohl Sie vorhandene Ressourcen erkundet haben, sind Sie möglicherweise immer noch verwirrt darüber rätselhafte -> und . Operatoren in C. Dieser Artikel soll Licht auf ihre wahre Natur werfen und klären, wann ihre Verwendung notwendig wird.
Den Zweck von Pointer-to verstehen -Member-Operatoren
Sowohl -> als auch . sind Zeiger-auf-Member-Operatoren, die den indirekten Zugriff auf Member-Funktionen ermöglichen eine Mitgliedsfunktion über einen Zeiger und nicht direkt von einem Objekt.
Syntax und Verwendung
Verwendungszweck -> vs. .
Beispiel
Betrachten Sie eine Klasse X mit den folgenden Mitgliedsfunktionen: f() und g (). Angenommen, Sie haben einen Zeiger, der auf die Funktion f() zeigt:
struct X { void f() {} void g() {} }; typedef void (X::*pointer)(); pointer somePointer = &X::f;
Um somePointer mit einem Objekt x aufzurufen, würden Sie Folgendes verwenden:
X x; (x.*somePointer)(); // Calls x.f()
Wenn x kein Objekt ist Wenn Sie jedoch auf einen Zeiger auf ein Objekt verweisen, können Sie die Mitgliedsfunktion mit ->* wie folgt aufrufen:
X* px = new X; (px->*somePointer)(); // Calls px->f()
Dieses Beispiel zeigt, dass die Verwendung von ->> oder . beim Zugriff von entscheidender Bedeutung ist Memberfunktionen indirekt über Zeiger, insbesondere beim Umgang mit Objekten, auf die verwiesen wird.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen den Pointer-to-Member-Operatoren „->*' und „.*' von C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!