Aufrufen statischer Member-Methoden für Klasseninstanzen in C
Es stellt sich die Frage nach der Gültigkeit des Aufrufs statischer Member-Methoden für Klasseninstanzen in C. Statische Mitgliedsmethoden werden normalerweise über den Klassennamen aufgerufen, aber der folgende Codeausschnitt scheint dieser Konvention zu widersprechen:
class Test { public: static void DoCrash() { std::cout << "TEST IT!" << std::endl; } }; int main() { Test k; k.DoCrash(); }
Frage:
Antwort:
Während statische Membermethoden herkömmlicherweise über den Klassennamen aufgerufen werden, ermöglicht der C-Standard den Aufruf auf Klasseninstanzen. Dies geht aus dem folgenden Abschnitt im C 03-Standard hervor:
„Ein statisches Mitglied s der Klasse Member-Zugriffssyntax (5.2.5), um auf ein statisches Mitglied zu verweisen, indem die Klassenmitglieds-Zugriffssyntax verwendet wird. In diesem Fall wird der Objektausdruck ausgewertet Eine statische Member-Methode über die Klasseninstanzsyntax ist nicht nur zulässig, sondern hat auch eine andere Semantik. In solchen Fällen wird der Objektausdruck ausgewertet, was möglicherweise Vorteile im Kontext der generischen Programmierung bietet.Beispiel:
Der folgende Code zeigt, wie statische Member-Methoden funktionieren kann sowohl mit Klassennamen als auch mit Instanzsyntax verwendet werden:
Das obige ist der detaillierte Inhalt vonKönnen statische Membermethoden für Klasseninstanzen in C aufgerufen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!