Ich habe gehört, es gibt Unterschiede zwischen den Sprachen über die Bedeutung des Schlüsselwortes static
, aber ich habe keine gute Liste gefunden, die diese Unterschiede konsolidiert.statisch in verschiedenen Sprachen
Hier ist, was ich weiß, über die Bedeutung von static
in C++:
- Für lokale statische Variablen innerhalb einer Funktion, die Variable beim Start initialisiert wird, und der Wert wird über Funktionsaufrufe gespeichert.
- Statische Datenelemente werden von allen Instanzen einer Klasse gemeinsam genutzt. Mit anderen Worten, es gibt nur eine Instanz eines statischen Datenelements. Statische Datenelemente müssen im Dateibereich initialisiert werden.
- Statische Memberfunktionen haben nur Zugriff auf statische Member.
- Im rekursiven Code hat ein statisches Objekt oder eine Variable in verschiedenen Instanzen eines Codeblocks garantiert denselben Zustand.
- Statische Objekte und Variablen, die im Dateibereich definiert sind, haben nur interne Verknüpfungen. Keine anderen Dateien dürfen sie benutzen.
Wie funktioniert die Bedeutung von static
Änderung in anderen Sprachen?
Statische Locals in C++ werden beim ersten Aufruf initialisiert, nicht beim Start. –
@Iraimbilanja, können Sie mir eine Referenz dafür geben? MSDN scheint etwas anderes zu empfehlen. –
@Iraimbilanja: C & V 6,7 (siehe meine Post unten für die genaue Linie). – dirkgently