Questo può essere un breve & semplice domanda, ma non ho mai trovato una risposta soddisfacente ad esso:C++ main() in una grande OOP progetto
Cosa codice non la funzione main() di solito sono costituiti da un grande progetto C++? Sarebbe un'ipotesi errata pensare che di solito è solo inizializzare un oggetto di classe (wrapping) e chiamare una funzione al suo interno per risolvere il problema?
Perché main() non è un metodo in primo luogo? È per preservare la retrocompatibilità con C?
Il motivo per cui non è una funzione membro è che quindi è necessario un modo per specificare di quale classe è una funzione membro. C++ non ha nulla di simile a manifest di Java e nessuna riflessione. –
da un livello più concettuale, ogni programma ha bisogno di un punto di ingresso, nel caso di C++ "classico" questo è all'interno dell'eseguibile che il compilatore produce, quando il programma inizia non c'è classe nell'esistenza che il main possa essere un metodo di. Nei linguaggi interpretati, il runtime viene eseguito per primo e imposta un contesto per l'esecuzione dell'applicazione prima che inizi, in modo che il punto di ingresso sia un metodo/membro di una classe di impostazione precedentemente possibile se la lingua/runtime lo consente/lo desidera. – Mark
@ Mark: cosa? Il compilatore è responsabile dell'emissione del codice per inizializzare varie cose, inclusi i membri statici delle classi, prima che main() venga eseguito. Nella misura in cui si può affermare che le classi esistono in runtime in C++, esistono molte classi esistenti prima che venga chiamato il punto di ingresso. Potrebbero esserci anche molti oggetti in esistenza. –