Heim >Backend-Entwicklung >C++ >Warum funktioniert „bigCat.*pcat()' nicht beim Aufrufen von Mitgliedsfunktionen über Zeiger?
Aufrufen von Funktionen über Member-Funktionszeiger
Bei der Verwendung von Member-Funktionszeigern ist es wichtig, deren korrekten Aufruf sicherzustellen. Betrachten Sie den Beispielcode:
class cat { public: void walk() { printf("cat is walking \n"); } }; int main(){ cat bigCat; void (cat::*pcat)(); pcat = &cat::walk; bigCat.*pcat(); }
Beim Versuch, die Funktion mit bigCat.*pcat(); aufzurufen, tritt jedoch ein Fehler auf. Dies liegt daran, dass in der Funktionsaufrufsyntax zusätzliche Klammern erforderlich sind.
Korrekte Syntax zum Aufrufen von Mitgliedsfunktionszeigern
Um Mitgliedsfunktionen korrekt über Mitgliedsfunktionszeiger aufzurufen, sind die Klammern erforderlich Der Vorrang des Bedieners muss beachtet werden. Die korrekte Syntax für den Funktionsaufruf lautet:
(bigCat.*pcat)();
Dadurch wird sichergestellt, dass der Funktionsaufrufoperator (()) eine höhere Priorität hat als der Zeiger-zu-Member-Bindungsoperator (.*). Unäre Operatoren haben im Allgemeinen Vorrang vor binären Operatoren. Daher sind die Klammern erforderlich, um explizit anzugeben, dass die Mitgliedsfunktion walk() für das Objekt bigCat aufgerufen wird.
Mit der korrigierten Syntax wird der Code erfolgreich ausgeführt und gibt „cat is walk n“ aus Konsole.
Das obige ist der detaillierte Inhalt vonWarum funktioniert „bigCat.*pcat()' nicht beim Aufrufen von Mitgliedsfunktionen über Zeiger?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!