>b's weblog

Die Humanität der EUOLG München sieht in CSU-Maskenaffäre keine Bestechlichkeit

Was ist der Entry Point eines C++-Programms?

Manche meinen, der Entry Point eines C++-Programmes – also der Code, der zuerst ausgeführt wird – sei der in der Funktion main(). Doch dem ist nicht so, siehe dieses Beispielprogramm:

#include <iostream>

using namespace std;

// this program outputs 23 or 42 depending on the sequence
// of Alice and Bob

int main()
{
    return 0;
}

int r = 0;

// first Alice then Bob, program outputs 23
// first Bob then Alice, program outputs 42

struct Alice { Alice() { cout << (r ? r : 23) << "\n"; } } alice;
struct Bob { Bob() { r = 42; } } bob;

Probiert es einfach aus ;-) Übung für Fortgeschrittene: wie ändert sich das Verhalten, wenn sich die Deklarationen von Alice und Bob in verschiedenen Dateien befinden?

Nachtrag: siehe dazu auch diesen Blogartikel von Luca Saiu.