Langage C++

Formation C++ : se perfectionner en C++ Se perfectionner en C++

Apporter une compréhension intime des mécanismes du langage C++ et de ses dernières évolutions pour produire des applications maintenables, robustes et plus performantes.

Résumé

Logiciels : Chaîne de développement GCC sous Eclipse CDT ou VS Code.
Durée : 4 jours, 28 heures
Objectifs :
 développer des classes C++ fiables et performantes,
 exploiter la surcharge des opérateurs standards,
 utiliser efficacement la STL,
 savoir se prémunir des fuites mémoires en exploitant les pointeurs intelligents,
 mettre en œuvre les principaux apports des normes C++11 à C++20
Public : Développeurs expérimentés.
Pré-requis : cette formation s’adresse à des développeurs possédant une première expérience dans le développement en langage C++.
Méthodes mobilisées : Chaque aspect théorique est illustré par un exemple concret de mise en œuvre puis exploité lors du développement incrémental d’une véritable application.
Modalités et délais d’accès : Sur inscription préalable au minimum 1 semaine avant le début de la formation selon disponibilité du formateur.
Modalités d’évaluations : Une évaluation du niveau des stagiaires est réalisée avant l’entrée en formation par téléphone ou au moyen d’un questionnaire. Évaluation des acquis et de la satisfaction en fin de formation.
Accessibilité aux personnes en situation de handicap ou présentant des difficultés d’apprentissage : nous pouvons proposer des solutions de compensation de nos prestations en adaptant les moyens pédagogiques, techniques et d’encadrement (les précisions).
Taux de satisfaction 2i2L : 96,34 % des stagiaires sont satisfaits à l’issue de leur formation.
Tarif : pour une demande de formation interne, nous consulter.

Présentation

C++ est un langage de programmation compilé, permettant la programmation sous de multiples paradigmes comme la programmation procédurale, la programmation orientée objet et la programmation générique. Le langage C++ n’appartient à personne et par conséquent n’importe qui peut l’utiliser sans besoin d’une autorisation ou obligation de payer pour avoir le droit d’utilisation. C++ est l’un des langages de programmation les plus populaires, avec une grande variété de plates-formes matérielles et de systèmes d’exploitation. [1]

 Site officiel du langage C++
 l’article C++ sur Wikipédia

Programme

Implémentation rigoureuse des classes C++
 Rappel sur les différents types de constructeurs
 Listes d’initialisation, directives =delete et =default
 Délégation de contructeurs
 Les attributs « const », « inline » et « friends »
 Forme canonique de Coplien
 Référence rvalue et move sémantique
 Organisation des sources en namespaces

Bonnes pratiques de l’Héritage en C++
 Héritage public versus héritage private
 Héritage versus composition
 Constructeur, destructeur et virtualité
 Héritage multiple et héritage virtuelle
 Règles d’implantation des interfaces en C++
 Directives C++ 11 : override et final

Conversion et RTTI
 Constructions implicites et mot-clé explicit
 Définition d’opérateurs de conversion
 Les opérateurs const_cast, static_cast, reinterpret_cast
 Les mécanismes RTTI, l ’opérateur dynamic_cast

Surcharge des opérateurs, aspects avancés
 Introduction aux pointeurs intelligents, surcharge des opérateurs ++, —, * et ->
 Implantation d’un itérateur, classe interne
 Insertion/extraction d’objets sur des flux, surcharge d’opérateurs <<, >>
 Les foncteurs et la surcharge de l’opérateur ()

Gestion avancée de la mémoire en C++
 Le comportement standard des opérateurs new et delete, new[] et delete[]
 Limites de l’allocation dynamique standard
 Pool d’allocation mémoire spécifique
 Surcharge des opérateurs new et delete
 Les pointeurs intelligents C++ 11 : shared_ptr, weak_ptr et unique_ptr

Les templates C++
 Objectifs des templates
 Template de classe et de fonction
 Spécialisation partielle ou complète de templates
 Introduction à la méta programmation en C++
 Template variatique et « perfect forwarding »

La STL (Standard Template Library)
 Organisation de la STL
 Classes utilitaires : string, complex, pair, …
 Les conteneurs : vector, list, map et itérateurs
 Les nouvelles collections C++ 11 : array, unordered_map et unordered_set
 Modification de l’allocateur d’un conteneur
 Les algorithmes et les adaptateurs

Bonnes pratiques des exceptions C++
 Levée et capture d’exceptions : opérateur throw et les blocs try/catch
 Exceptions et constructeurs
 Exceptions standards STL
 Spécification d’exceptions en C++ 11

Autres nouveautés C++11
 enum class, type auto, nullptr, boucle sur intervalle
 Les expressions régulières
 Les lambda expressions
 Le namespace chrono
 Introduction au multithreading

Notes

[1Source Wikipédia