Heim > Backend-Entwicklung > C++ > Können Sie eine statische Member-Methode für eine Klasseninstanz in C aufrufen?

Können Sie eine statische Member-Methode für eine Klasseninstanz in C aufrufen?

Patricia Arquette
Freigeben: 2024-11-06 03:51:02
Original
362 Leute haben es durchsucht

Can You Call a Static Member Method on a Class Instance in C  ?

Aufruf statischer Member-Methoden in C auf einer Klasseninstanz

In C werden statische Member-Methoden normalerweise über den Klassennamen selbst und nicht über eine Instanz der Klasse aufgerufen. Es stellt sich jedoch die Frage: Können statische Mitgliedsmethoden für Klasseninstanzen aufgerufen werden?

Das angegebene Codefragment zeigt ein faszinierendes Verhalten:

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...
}
Nach dem Login kopieren

In Visual Studio 2008 SP1 wurde dieser Code erfolgreich ausgeführt kompiliert und gibt „TEST IT!“ aus. Entgegen der üblichen Erwartung wird scheinbar eine statische Methode auf einer Instanz der Klasse aufgerufen.

1. Liegen Sie falsch? Ist der Code korrekt?

Basierend auf dem C-Standard ist der Aufruf einer statischen Member-Methode für eine Instanz nicht falsch. Im Standard heißt es in 9.4 (Statische Mitglieder) ausdrücklich:

„Auf ein statisches Mitglied der Klasse (5.2.5), um auf ein statisches Mitglied zu verweisen.“

Mit anderen Worten: Es ist nicht erforderlich, den Klassennamen zu verwenden, um auf statische Mitglieder zuzugreifen. Die Zugriffssyntax für Klassenmitglieder ist zulässig, in diesem Fall wird jedoch der Objektausdruck ausgewertet.

2. Warum ist das zulässig?

Der Standard ermöglicht den Aufruf statischer Mitglieder auf Instanzen, um die Verwendung von „statischen oder nicht“-Methoden in Vorlagen zu erleichtern. Vorlagen erfordern häufig die Möglichkeit, eine Funktion aufzurufen, ohne zu wissen, ob sie statisch ist oder nicht. Indem der Compiler den Aufruf statischer Member auf Instanzen zulässt, kann er immer die richtige aufzurufende Funktion bestimmen, unabhängig von ihrem statischen Status.

Das obige ist der detaillierte Inhalt vonKönnen Sie eine statische Member-Methode für eine Klasseninstanz in C aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage