Vers un C++ moderne

Le C++11 a dépoussiéré le langage C++, en assumant sa différence par rapport aux autres langages objets et il s'est éloigné de son héritage du langage C.

Différences par rapport aux autres langages objets

Le langage C++ a fait le choix d'introduire dès le début, le concept de template. Ce concept a permis aux développeurs d'imaginer une autre façon de programmer les objets et de créer des librairies flexibles et performantes (Modern C++ design, Andrei Alexandrescu). La création de la librairie BOOST est l'exemple de la mise en application des nouveaux concepts et la base qui a permis la création des nouveaux standards C++11, 14, 17, 20, ... L'idée générale est le concept de "polymorphisme statique", c'est à dire qu'à l'instar du polymorphisme dynamique, le type d'un objet n'est pas défini au moment de l'implémentation. Par contre, il est défini au moment de la compilation (permettant ainsi une exécution plus rapide et de conserver la sécurité du typage). Cette manière de programmer a permis l'émergence de concepts aux noms barbares :

  • Curiously recurring template pattern
  • Template Metaprogramming
  • SFINAE “Substitution Failure Is Not An Error”

Le C++11 va introduire de nouveaux mots-clés afin de faciliter la mise en place de ces concepts.

Alternatives aux langages C

Sous sa forme 98, le langage C++ conserve un certains nombres de notions du langage C :

  • typedef
  • macros, NULL
  • enum
  • union
  • tableaux
  • ...

En C++11, des mots-clés ont été ajoutés afin de mieux répondre aux nouvelles exigences du langage et d'assurer une meilleur sureté en terme de typage.

Objectifs de la présentation

Il est évident que l'on ne pourra pas faire le tour de toutes les nouveautés. On s'intéressera aux évolutions majeures et surtout à leurs bonnes pratiques à travers des exemples.


In [ ]: