static
bedeutet nicht const
.
Von MSDN:
Wenn eine Variable geändert wird, wird die statische Schlüsselwort an, dass die Variable eine statische Dauer hat (sie wird zugewiesen wenn das Programm beginnt und freigegeben, wenn das Programm endet) und initialisiert ihn auf 0, sofern kein anderer Wert angegeben wird. Beim Ändern einer Variable oder Funktion im Bereich der Datei, gibt das Schlüsselwort static an, dass die Variable oder Funktion eine interne Verknüpfung hat (ihr Name ist nicht sichtbar von außerhalb der Datei, in der sie deklariert ist deklariert ist).
Eine als statisch deklarierte Variable in einer Funktion deklarierte Variable behält ihren Zustand zwischen Aufrufen dieser Funktion.
Beim Ändern eines Datenelements in einer Klassendeklaration, gibt das Schlüsselwort static an, dass eine Kopie des Elements gemeinsam von allen Instanzen der Klasse geteilt wird. Beim Ändern eines Elements Funktion in einer Klassendeklaration wird mit dem static-Schlüsselwort an, dass die Funktion nur auf statische Mitglieder zugreift.
Der Wert von static wird zwischen den einzelnen Funktionsaufrufen beibehalten so zum Beispiel (wieder von MSDN):
// static1.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
void showstat( int curr ) {
static int nStatic; // Value of nStatic is retained
// between each function call
nStatic += curr;
cout << "nStatic is " << nStatic << endl;
}
int main() {
for ( int i = 0; i < 5; i++ )
showstat( i );
}
In Ihrem Beispiel wird x wie erwartet inkrementiert, denn der Wert ist beibehalten .