Orsys

C++ expert, les avancées du langage (de C++ 11 à 17)

Par Orsys

Objectifs

  • Appréhender les nouveautés et les améliorations du langage C++11, 14 et 17
  • Utiliser les expressions lambda
  • Exploiter les possibilités de la programmation fonctionnelle
  • Maîtriser les allocations-destructions d'objets
  • Développer une application multithreadée

Programme

L'avènement des C++11, 14 et 17

  • Les différentes versions des normes C++.
  • Les objectifs des versions de C++.
  • La compatibilité des codes anciens.

Travaux pratiques
Vérification de l'outillage à l'aide d'un code C++17 fourni.

Les améliorations du langage

  • Les énumérations fortement typées.
  • Le mot-clé auto pour simplifier le typage.
  • La boucle basée sur un intervalle.
  • Les vérifications de la présence d’un include avec _has_include en C++17.
  • Les initialiseurs dans les if et switch de C++17.
  • Les templates à arguments variables, pointeur nul, littéraux, etc.
  • constexpr et « if constexpr » de C++17 pour évaluer à la compilation.

Travaux pratiques
Mise en œuvre des améliorations.

Les modifications au niveau des classes

  • La délégation de constructeur.
  • La sémantique de déplacement et le constructeur par déplacement.
  • Les directives =delete, =default =override.
  • Les initialiseurs de conteneurs.

Travaux pratiques
Création de classes C++17.

L'utilisation des threads

  • L'exécution d'un thread. Attente de fin avec join().
  • La gestion des données locales à un thread avec volatile.
  • Comment récupérer un résultat avec future<> et async().

Travaux pratiques
Multithreader un code séquentiel.

Les autres nouveautés de la bibliothèque standard

  • std ::string_view de C++17 : pour le passage de séquences de caractères.
  • FileSystem library de C++17 pour manipuler les fichiers.
  • La gestion du temps avec le namespace chrono.
  • Comment utiliser le nouveau conteneur tuple.

Travaux pratiques
Mise en œuvre des nouveautés.

La programmation fonctionnelle avec les expressions lambda

  • Déclaration, typage, implémentation et utilisation.
  • Capture (closure) par valeur ou par référence des variables liées au contexte.

Travaux pratiques
Exercices de programmation fonctionnelle.

La gestion mémoire et les conteneurs

  • Les conteneurs à base de hachage.
  • Les nouveaux algorithmes de C++11,14,17.
  • Les smart pointers : shared_ptr, weak_ptr, unique_ptr.

Travaux pratiques
Mise en œuvre de la gestion mémoire C++11.

Pédagogie

Des exercices pratiques de programmation permettront d'appréhender les différents concepts abordés.

L'avènement des C++11, 14 et 17

  • Les différentes versions des normes C++.
  • Les objectifs des versions de C++.
  • La compatibilité des codes anciens.

Travaux pratiques
Vérification de l'outillage à l'aide d'un code C++17 fourni.

Les améliorations du langage

  • Les énumérations fortement typées.
  • Le mot-clé auto pour simplifier le typage.
  • La boucle basée sur un intervalle.
  • Les vérifications de la présence d’un include avec _has_include en C++17.
  • Les initialiseurs dans les if et switch de C++17.
  • Les templates à arguments variables, pointeur nul, littéraux, etc.
  • constexpr et « if constexpr » de C++17 pour évaluer à la compilation.

Travaux pratiques
Mise en œuvre des améliorations.

Les modifications au niveau des classes

  • La délégation de constructeur.
  • La sémantique de déplacement et le constructeur par déplacement.
  • Les directives =delete, =default =override.
  • Les initialiseurs de conteneurs.

Travaux pratiques
Création de classes C++17.

L'utilisation des threads

  • L'exécution d'un thread. Attente de fin avec join().
  • La gestion des données locales à un thread avec volatile.
  • Comment récupérer un résultat avec future<> et async().

Travaux pratiques
Multithreader un code séquentiel.

Les autres nouveautés de la bibliothèque standard

  • std ::string_view de C++17 : pour le passage de séquences de caractères.
  • FileSystem library de C++17 pour manipuler les fichiers.
  • La gestion du temps avec le namespace chrono.
  • Comment utiliser le nouveau conteneur tuple.

Travaux pratiques
Mise en œuvre des nouveautés.

La programmation fonctionnelle avec les expressions lambda

  • Déclaration, typage, implémentation et utilisation.
  • Capture (closure) par valeur ou par référence des variables liées au contexte.

Travaux pratiques
Exercices de programmation fonctionnelle.

La gestion mémoire et les conteneurs

  • Les conteneurs à base de hachage.
  • Les nouveaux algorithmes de C++11,14,17.
  • Les smart pointers : shared_ptr, weak_ptr, unique_ptr.

Travaux pratiques
Mise en œuvre de la gestion mémoire C++11.

PDF

Imprimer

Envoyer

Envoyer la page à :

Formations de la même catégories (5)

M2i Formation
IoT - Développer des applications connectées avec C++ / QtPar M2i Formation
  • Développer en C++ / Qt5 dans un environnement connecté.
Orsys
C++ expert, les avancées du langage (de C++ 11 à 17)Par Orsys

Cette formation vous permettra d'assimiler les nouveautés introduites par les standards C++11, 14 et 17. Vous découvrirez les expressions lambda, exploiterez les possibilités de la programmation fonctionnelle, maîtriserez la gestion de la mémoire et exploiterez la bibliothèque standard C++.

Arkesys
C / C++ - Programmation avancée en C++Par Arkesys
  • Coder des applications efficaces et sécurisées en termes de gestion de la mémoire via les techniques RAII ;
  • Utiliser la librairie standard proposée par le langage C++ ;
  • Mettre en œuvre une application multitâches.
Global Knowledge
Programmation en langage CPar Global Knowledge

Cette formation intensive permet aux participants d'acquérir les compétences et connaissances nécessaires pour comprendre le fonctionnement des différents mécanismes, comprendre la mise en œuvre grâce à de nombreux exercices pratiques. Les participants seront en mesure d'écrire des programmes C robustes et portables.

SQLI Institut
Développer une application graphique en C++ avec QtPar SQLI Institut
  • Maîtriser le développement d'écrans avec Qt
  • Comprendre le mécanisme de la gestion d'évènements
  • Savoir utiliser les principales API non graphiques de Qt : accès aux données, réseau, fichiers
  • Maîtriser le développement en QML avec QtQuick