Heim > Backend-Entwicklung > C++ > C-Member-Funktionszeiger: Wann sollte „->*' vs. „.' verwendet werden?

C-Member-Funktionszeiger: Wann sollte „->*' vs. „.' verwendet werden?

DDD
Freigeben: 2024-11-17 14:00:04
Original
280 Leute haben es durchsucht

C   Member Function Pointers: When to Use `->*` vs. `.`?
*` 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.

>*:
    Dieser Operator wird verwendet, wenn der Zeiger und das Objekt vom gleichen Typ sind.
  • .*:
  • Dieser Operator wird verwendet, wenn der Zeiger vom gleichen Typ ist eines abgeleiteten Typs, während das Objekt vom Basistyp ist.
  • Beispiel:

Betrachten Sie die folgende Klasse:

Um einen Zeiger auf die Mitgliedsfunktion f zu erstellen, können wir typedef:

struct X
{
   void f() {}
   void g() {}
};
Nach dem Login kopieren

Jetzt können wir f dem Zeiger somePointer:

typedef void (X::*pointer)();
Nach dem Login kopieren

Um das Mitglied aufzurufen, zuweisen Funktion mit dem Zeiger benötigen wir ein Objekt:

pointer somePointer = &X::f;
Nach dem Login kopieren

Wenn x ein Zeiger auf ein Objekt ist, müssen wir stattdessen >* verwenden:

X x;
(x.*somePointer)(); // Calls x.f()
Nach dem Login kopieren

Verwendung Szenarien:
X* px = new X;
(px ->* somePointer)(); // Calls px->f()
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage