Pourquoi ne plaçons-nous pas la méthode principale C ++ dans une classe?

En C ++, pourquoi ne place-t-on jamais la méthode principale dans une classe (comme Java)? Pourquoi cela n’a-t-il pas de sens (je pense)?

Nous pouvons. main n’est pas un mot réservé. Mais selon la norme de langage, la chaîne d’outils C ++ s’attend à ce que le point d’entrée du programme soit main dans la scope globale. Ainsi, la partie main une classe ne sera pas reconnue comme le point d’entrée du programme.

N’hésitez pas à définir une méthode de classe appelée main et à l’appeler depuis la classe main globale.

Cette conception vient entièrement de C. La compatibilité avec le code C existant était l’un des principaux objectives de la conception de C ++ à l’origine, et le fait de changer la convention de point d’entrée ne présentait pratiquement aucun avantage réel. Ils ont donc maintenu la norme C en place. Et comme tout le monde le dit, C ++, contrairement à Java, permet parfaitement des fonctions autonomes (c’est-à-dire non classées).

Pourquoi le ferions nous? Pourquoi avons-nous besoin de?

Pour qu’une méthode de classe ait un sens, nous devons avoir une instance d’object. Lorsque main est appelé, nous n’avons pas d’instance.

Donc, il aurait pu être transformé en une fonction membre statique à la place, mais à quoi servirait-il ? Est-ce “plus orienté object”? Comment?

Je pense que cela a du sens comme C ++ le fait: main est le sharepoint départ avant que vous ayez des objects, avant qu’il n’y ait d’instances.

En Java, main est un membre statique car rien d’autre n’existe. Mais en C ++, les fonctions non membres existent, alors pourquoi ne pas laisser main faire partie?

Parce qu’en C, qui était de loin antérieur aux classes, main était une fonction autonome et que C ++ n’avait pas changé pour maintenir la compatibilité.

Si vous voulez vraiment faire cela, rien ne vous empêche d’écrire une classe que vous instanciez dans main et que vous appelez ensuite une méthode main .

En C ++, main () est une fonction appelée lors de l’exécution du programme et n’est pas une méthode. Cette fonction principale peut utiliser des classes et des méthodes de classes dans son exécution.

Les méthodes sont des fonctions définies dans des classes destinées à restr proches de la classe / de l’object dans lequel elles sont définies. Par conséquent, main () n’est pas bloqué dans une classe car il n’est pas destiné à agir sur une seule classe ou un seul object.

C ++ était destiné et est supposé être rétro-compatible avec C et cfront (le premier compilateur C ++) n’aurait pas fonctionné si main n’avait pas été autorisé.

Le premier / original compilateur C ++, appelé cfront, a compilé le C ++ en le convertissant en C, et le langage C nécessite l’utilisation de main ()

Voir l’URL suivante pour plus d’informations:

http://en.wikipedia.org/wiki/Cfront

http://www.physics.drexel.edu/courses/Comp_Phys/General/C_basics/