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.