FAQ C++Consultez toutes les FAQ

Nombre d'auteurs : 35, nombre de questions : 368, dernière mise à jour : 17 novembre 2018  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs.

Je tiens à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes ; les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur ou si vous souhaitez devenir rédacteur, lisez ceci.

Sur ce, nous vous souhaitons une bonne lecture.


SommaireGénéralités sur le C++Caractéristiques du langage (8)
précédent sommaire suivant
 

Le C++ est un langage permettant de maîtriser la représentation bas niveau des données manipulées (arithmétique de pointeurs, allocation manuelle de la mémoire…) tout en fournissant des outils (références, exceptions, classes, templates…) permettant de construire des structures de plus haut niveau. Il est donc particulièrement adapté à des programmes de taille assez importante mais où les performances comptent. C'est un langage typé statiquement (c'est-à-dire une fois pour toutes lors de la compilation) permettant de créer des programmes compilés en natif au moyen de compilateurs optimiseurs ce qui les rend généralement très performants.
C'est un langage de programmation multiparadigmes (c'est-à-dire qu'il permet plusieurs types de programmation) parmi lesquels la programmation objet, la programmation procédurale ainsi que la programmation générique grâce aux templates. Tout ceci fait de C++ un langage populaire avec un large spectre d'applications grâce à la très grande quantité de bibliothèques et ressources disponibles.

Mis à jour le 22 novembre 2004 Aurelien.Regat-Barrel JolyLoic

Quasiment.

Le C++ est aussi compatible avec le C que faire se peut, mais pas parfaitement. Pratiquement, la différence la plus marquante est que le C++ exige les prototypes, ce qui veut dire qu'une fonction déclarée f(); ne prend pas de paramètres, alors qu'en C, on peut passer un nombre arbitraire de paramètres.

Il y a d'autres différences parfois très subtiles. Par exemple sizeof('x') vaut sizeof(char) en C++, alors qu'en C, cela vaut sizeof(int).

Un autre exemple est celui des étiquettes de structures qui sont stockées dans le même namespace que les autres identificateurs. Là où le C exige la déclaration explicite d'une structure, cela devient redondant en C++. Par exemple, l'écriture suivante est valide en C++ mais est redondante, alors qu'elle est obligatoire en C.

Code c++ : Sélectionner tout
typedef struct Fred Fred;

Mis à jour le 10 février 2004 Cline

  • Le C++ bénéficie d'une large base installée, ce qui veut dire qu'il y a un support de plusieurs vendeurs pour les outils, environnements, services de consultance.
  • Le C++ permet aux développeurs de fournir des interfaces simplifiées, ce qui réduit la quantité de défauts rencontrés lorsqu'elles sont réutilisées.
  • Le C++ permet d'exploiter l'intuition des développeurs grâce à l'utilisation de la surcharge d'opérateur, ce qui permet de réduire la courbe d'apprentissage pour les utilisateurs.
  • Le C++ permet de « localiser l'accès » à une partie du logiciel, ce qui réduit la charge de travail causée par les changements.
  • Le C++ permet de réduire le compromis fiabilité / utilisabilité, donc le coût d'utilisation ou de réutilisation du logiciel.
  • Le C++ permet de réduire le compromis fiabilité / vitesse, donc d'améliorer la qualité sans dégradation des performances.
  • Le C++ offre les techniques d'héritage et d'appel dynamique, ce qui permet d'appeler du nouveau code à partir de code plus ancien, permettant donc d'ajouter de nouvelles fonctionnalités ou d'adapter vos programmes à la demande du marché.

Mis à jour le 10 février 2004 Cline

Le C++ n'a pas été créé pour démontrer à quoi ressemblait un langage Orienté Objet parfait. Il a été conçu pour être un outil pratique, pour répondre à des problèmes pratiques.
Il présente quelques défauts, mais les seuls endroits où il serait judicieux d'apporter des modifications, pour atteindre la perfection, n'auraient qu'un but purement académique, ce qui n'est pas le but du C++.

Mis à jour le 10 février 2004 Cline

Il s'agit sûrement de la question qui génère le plus de bruit par rapport à l'information utile qui en ressort. Veuillez lire ce qui suit avant de vous lancer dans ce genre de débat.

Dans 99 % des cas, le choix d'un langage de programmation est fait en fonction de considérations financières ou commerciales, mais pas en fonction des considérations techniques.
Les choses réellement importantes qui pèsent lors de la décision sont la présence d'un environnement de développement, la possibilité de faire fonctionner le logiciel sur la machine cible, les licences, la disponibilité de développeurs expérimentés, de consultants, sans oublier la « culture de l'entreprise ».
Ces considérations financières et commerciales jouent souvent un rôle plus important que la vitesse de compilation, la vitesse d'exécution, le typage dynamique ou le typage statique, etc.

Quiconque argumente en faveur d'un langage par rapport à un autre de façon purement technique (c'est-à-dire en ignorant les éléments commerciaux) s'expose à être traité de « technicien extrémiste » et à ne pas être écouté.

Mis à jour le 10 février 2004 Cline

Oui, C++ est un langage pratique.
Dans le monde de l'industrie logicielle, C++ est vu comme un outil solide, mature et sans surprise. Il est largement utilisé et supporté par l'industrie, ce qui le valorise d'un point de vue productif en général.

Mis à jour le 10 février 2004 Cline

Énormément de sociétés et d'administrations.

Le nombre important de développeurs (et par conséquent le grand nombre d'infrastructures de support, y compris vendeurs, outils, cours…) est une des caractéristiques importantes du C++.

Mis à jour le 10 février 2004 Cline

Oui, il est tout à fait possible d'utiliser des bibliothèques écrites en C dans un programme C++ pour autant qu'elles soient déclarées correctement dans les fichiers d'en-tête en utilisant le extern "C" qui indique que la fonction doit être considérée comme du code C et non C++.

Code c++ : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
#ifdef __cplusplus 
extern "C" { 
#endif 
  
   char* maFonctionC_1 (void);  
   void maFunctionC2 (char *param1);  
  
#ifdef __cplusplus 
} 
#endif

Mis à jour le 9 octobre 2003 gege2061 LFE

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2019 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.