Perché non inseriamo il metodo principale C++ all'interno di una classe?

Perché non inseriamo il metodo principale C++ all'interno di una classe?

Noi possiamo. main non è una parola riservata. Ma per lo standard del linguaggio, la toolchain C++ prevede che il punto di ingresso del programma sia main in ambito globale. Quindi il main all'interno di una classe non verrà riconosciuto come punto di ingresso del programma.

Sentiti libero di definire un metodo di classe chiamato main e chiamalo dal main globale .

Questo design deriva completamente dal C. La compatibilità con il codice C esistente era uno dei principali obiettivi di progettazione del C++ all'inizio e non c'era quasi alcun vantaggio reale nel modificare la convenzione del punto di ingresso. Quindi hanno mantenuto lo standard C. E come tutti hanno detto, C++, a differenza di Java, consente perfettamente funzioni standalone (cioè non di classe).


Perché dovremmo? Perché è necessario?

Affinché un metodo di classe abbia un senso, dobbiamo avere un'istanza di un oggetto. Quando main viene chiamato, non abbiamo un'istanza.

Quindi potrebbe è stata invece resa una funzione membro statica, ma quale sarebbe il punto ? È "più orientato agli oggetti"? Come mai?

Penso che abbia senso il modo in cui lo fa C++:main è da dove inizi prima hai oggetti, prima che esistano istanze.

In Java, main è un membro statico perché nient'altro esiste. Ma in C++ esistono funzioni non membro, quindi perché non lasciare main essere uno di quelli?


Perché in C che precede di gran lunga le classi, main era una funzione autonoma e non è stata modificata in C++ per mantenere la compatibilità.

Se vuoi davvero farlo, non c'è niente che ti impedisca di scrivere una classe che istanzia in main e poi chiama un main metodo su.