Es gibt drei Regeln:
Es gibt keine Aussage über die Initialisierungsreihenfolge bei mehreren Dateien:
#include <iostream.h>
int fun()
{ int inp;
cin >> inp;
return inp;
}
int i = fun();
int main()
{ cout << "i is " << i << endl;
}
Wer sorgt dafür, daß das Objekt cin initialisiert ist, bevor i initialisiert wird ???
Am Ende der Include-Datei iostream.h wird folgendes Objekt definiert:
static class Iostream_init {
...
public:
Iostream_init() ;
~Iostream_init() ;
} iostream_init ;
Dessen Konstruktion sorgt dafür, daß cin initialisiert wird.