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

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

DDD
DDDOriginal
2024-11-17 14:00:04261Durchsuche

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() {}
};

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!

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