Cpp
Un article de Haypo.
Retour aux langages de programmation
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 :
- La librairie C++ STL : PDF de 63 pages écrit par l'Ours Blanc des Carpathes (Bruno Garcia). Très bonne introduction pour ceux qui ne connaissent pas encore la STL.
- Documentation de la STL par SGI
- Documentation de la libstdc++ de GNU
[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.

