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.