image/svg+xml $ $ ing$ ing$ ces$ ces$ Res Res ea ea Res->ea ou ou Res->ou r r ea->r ch ch ea->ch r->ces$ r->ch ch->$ ch->ing$ T T T->ea ou->r

C++ est un vieux langage toujours actif qui est régulièrement remis au gout du jour avec de nouvelles versions introduisant certaines fonctionnalités et constructions syntaxiques.

Lorsqu'une nouvelle version de C++ est introduite, la philosophie est de rester rétro-compatible avec les versions antérieures sans impact sur la performance du programme.
Ainsi du code C++ compilant avec la version N restera valide (dans la majorité des cas) pour la version N+1 avec des performances au moins aussi bonnes.

Une brève histoire de C++

C : l'ancêtre

Le langage C a été développé par l'informaticien Dennis Ritchie (Bell Labs) entre 1969 et 1973. Il a servi initialement à développer le système d'exploitation Unix (ainsi que de nombreux autres OS par la suite). Ses principales caractéristiques sont d'être un langage :

Le langage C propose un opérateur de référencement (&) et déréférencement (*) ce qui permet une manipulation fine et puissante de la mémoire (ce qui nécessite certaines précautions).

C++ : du C dopé avec des classes

Bjarne Stroustrup développe le successeur de C (nommé C++) à partir de 1979 avec l'idée d'y greffer un système de classes afin de pouvoir réaliser de la programmation orientée objet.

Il devient alors possible d'écrire des classes qui peuvent être liées entre-elles avec des relations d'héritage. Une classe contient différents types de membres :

La première version standardisée par l'organisme ISO de C++ date de 1998 (C++98).

La plupart des programmes C peuvent être compilés par un compilateur C++ (la principale source d'incompatibilité étant l'usage de mots réservés du C++). Ainsi l'adaptation de sources en C vers le C++ est relativement triviale. Cependant un programme C porté trivialement en C++ ne respectera pas la philosophie de la programmation orientée objet : pour s'y conformer un important travail de reconception devra être réalisé (création de classes, factorisation de code...).

Les versions standardisées ISO

C++98

C++98 date de 1998 et propose le support :

C++03

Peu de nouveautés ont été introduites par C++03, il s'agit essentiellement d'amélioration et de corrections de bugs de la précédente version C++98.

C++11

Il s'agit de la révision la plus conséquente du langage C++. De nombreuses fonctionnalités ont été introduites :

C++14

C++14 est une révision d'ampleur relativement limitée (ajout de certains attributs comme [[deprecated]], facilités pour l'écriture de littéraux numériques..., fonctions lambda génériques et polymorphes...)

C++17

C++17 propose certaines nouveautés :

C++20

C++20 est en cours d'élaboration avec une publication attendue pour... 2020 (étonnant, n'est-ce pas ?). Voici un aperçu rapide des principales nouveautés :