Statische Mitgliedsmethoden für Klasseninstanzen aufrufen
In C können statische Mitgliedsmethoden direkt oder über eine Klasseninstanz aufgerufen werden. Dieses Verhalten kann Fragen zu den Erwartungen des Standards an die Verwendung statischer Member-Methoden aufwerfen.
Der C-Standard gibt ausdrücklich an, dass statische Member-Methoden ohne Instanz aufgerufen werden können. Dies schließt jedoch nicht die Möglichkeit aus, sie über eine Instanz aufzurufen.
Betrachten Sie das folgende Codebeispiel:
class Test { public: static void DoCrash() { std::cout << "TEST IT!" << std::endl; } }; int main() { Test k; k.DoCrash(); // calling a static method like a member method... }
In diesem Beispiel wird die statische Methode DoCrash() auf einer aufgerufen Instanz der Testklasse (k). Überraschenderweise lässt sich dieser Code ohne Fehler kompilieren und ausführen und zeigt „TEST IT!“ an.
Warum ist das erlaubt?
Der Standard erlaubt den Aufruf statischer Mitgliedsmethoden über Instanzen für Mehrere Gründe:
Zusätzliche Punkte
Der Aufruf statischer Mitgliedsmethoden über Instanzen ist zwar zulässig, wird jedoch generell nicht empfohlen. Dies liegt daran, dass es zu Verwirrung und unerwartetem Verhalten führen kann, insbesondere wenn der Code aktualisiert oder geändert wird. Aus Gründen der Klarheit und Korrektheit wird es bevorzugt, statische Mitgliedsmethoden direkt über den Klassennamen aufzurufen, wie in Test::DoCrash().
Das obige ist der detaillierte Inhalt vonKönnen Sie statische Membermethoden für Klasseninstanzen in C aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!