Cpp

Un article de Haypo.

Retour à la page précédente Retour aux langages de programmation

Avertissement

Cet article est en cours de rédaction. Sa qualité est pauvre et son intérêt limité. Revenez un peu plus tard (ça peut être long), et lisez un autre article en attendant ;-) Si vous êtes impatient de lire la suite, secouez un peu son auteur :o)

Le langage C++ est un hack du langage C qui l'oriente objet :-D

Sommaire

[modifier] Peser le pour et le contre

[modifier] Avantages du C++

  • Code générique grâce aux fonctions et classes modèles (templates en anglais)
  • Code générique grâce à l'héritage
  • Code générique grâce à la STL (outils comme les itérateurs)
  • On peut faire de la programmation objet
  • Les flux (d'entrée/sortie : istream, ostream et iostream) sont géniaux
  • Exceptions (c'est bien plus propre que setjmp/longjmp en C) : libère la mémoire automatiquement par exemple

[modifier] Désavantages du C++

  • Il hérite des défauts du C (pointeurs et autres choses trop proches du matériel), et on peut très bien mélanger C et C++ (ce qui est très mal)
  • C'est très lent à compiler : les compilateurs (dumoins en 2004) ont beaucoup de difficultées à traiter les modèles. La précompilation des entêtes (fichiers .h) accélère le processus, mais souvent la simple modification d'un commentaire relance la compilation d'un projet en entier :-(

[modifier] La STL

La STL, Standard Template Library, est une boîte à outils apportant des classes, type de donnée et fonctions étendant les capacités du C++. Quelques exemples :

  • std::istream et std::ostream : Flux en entrée/sortie générique
  • std::string : Chaîne de caractères (un octet par caractère) manipulable très facilement
  • std::vector, std::list, std::map : Vecteur, liste doublement chaînée et table de hashage
  • std::min(), std::max() : Fonctions minimum/maximum génériques
  • std::shared_ptr : Compteur de référence sur un objet (genre de garbadge collector)
  • std::iterator : Itérateur générique sur un contenaire (aussi bien vecteur que table de hashage par exemple)
  • std::for_each() : Boucle "pour chaque"
  • etc.

La mémoire est gêrée de manière transparente, ce qui est très pratique

Documentation :

[modifier] Voir aussi

[modifier] Articles connexes

[modifier] Liens externes

  • Boost : Projet regroupant une collection de bibliothèque C++ de « haut-niveau ». Les outils sont très bien écrits, et me laissent souvent abasourdi (quoi ? c'est possible de faire ça en C++ ?). Quelques exemples : meta programming, conteneur any (pouvant une valeur de n'importe quel type), etc.
Récupérée de « http://www.haypocalc.com/wiki/Cpp »