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