Développement C/C++ :
Le langage C++ ANSI - Concepts avancés


Durée de la formation : 5 jours

Objectifs : L'objectif de la formation est de présenter : les concepts avancés du langage de programmation C++, la librairie C++ ANSI (et notamment la STL - Standard Template Library) ainsi que les concepts de programmations les plus adaptés à C++ (notamment la technique RAII). Par défaut, l'atelier de développement utilisé sera Eclipse/CDT. L'accent sera mis sur les nombreux travaux pratiques proposés (50% de la durée de la formation).

Prérequis : Pour pouvoir suivre ce cours, les stagiaires doivent obligatoirement maîtriser les concepts de base du langage C++ : codage de classes, instanciation d'objets, manipulation de pointeurs, définition et utilisation de propriétés (get et set), ... Ces différents points sont couverts dans la formation C++ - Les fondamentaux.

Public ciblé : Tous développeurs C++ désireux de parfaire leurs connaissances sur le langage C++ et sur sa librairie.

Situer cette formation dans un cursus global


La formation sera dispensée par un formateur expérimenté sur les technologies et les produits présentés. Chaque participant se verra remettre un support de cours et disposera d'un PC afin de pouvoir effectuer les différents travaux pratiques. La formation pourra être dispensée à Saint Laurent du Var (à proximité de Nice), à Meylan (à proximité de Grenoble), à Paris ou dans les locaux de votre entreprise.


  1. Mise à niveau des différents stagiaires

    • Rappels sur les éléments fondamentaux
      • C++ ANSI 2003 et C++1x
      • Utilisation de la librairie C++ ANSI
      • Les classes de flux <iostream>
      • La classe de manipulations de chaînes de caractères : string
    • Copie d'objets en C++
      • Problématiques soulevées
      • Les solutions à cette problématique
    • Mise en oeuvre d'une classe de Smart Pointeur (pointeurs malins)
  2. L'héritage - aspects évolués

    • Constructions et destructions d'objets basés sur l'héritage
      • Cycle de vie d'un objet
      • Cascade des appels de constructeur
      • Cascade des appels de destructeur
    • Polymorphisme et modes de liaison de méthode
      • Liaison statique d'appel de méthodes
      • Liaison dynamique d'appel de méthodes
      • Définition du polymorphisme
    • L'héritage induit le polymorphisme
    • Modes de liaisons d'appels de méthodes
      • La liaison statique (early binding)
      • La liaison dynamique (late binding)
      • Fonctionnement en interne de la liaison dynamique
      • Le piège des destructeurs et les fuites mémoires
    • Définition de méthodes et de classes abstraites
      • Les méthodes abstraites
      • Les classes abstraites
    • L'héritage multiple
      • Introduction au concept
      • Problématiques soulevées
      • L'héritage virtuel
    • Les tables de pointeurs de méthodes à liaison dynamique
      • Fonctionnement du compilateur
      • Fonctionnement avec l'héritage multiple
    • Mise en oeuvre d'interfaces en C++
  3. Le RTTI (RunTime Type Identification)

    • Identification dynamique de types
      • L'opérateur typeid
      • La métaclasse type_info
    • Transtypage dynamique
      • L'opérateur dynamic_cast
      • Fonctionnement avec les types pointés
      • Fonctionnement avec les types référencés
    • Les autres opérateurs de transtypages (non liés au RTTI)
      • L'opérateur const_cast
      • L'opérateur static_cast
      • L'opérateur reinterprete_cast
    • Utilisation du RTTI dans la mise en oeuvre d'un moteur de sérialisation
      • Fonctionnement général de la sérialisation
      • Sauvegarde d'un objet sur le flux
      • Reconstruction des objets en mémoire
      • Comparatif avec le moteur des MFC
  4. Les espaces de noms (namespace)

    • Aspects syntaxiques
    • Intérêts des espaces de noms
      • Mieux structurer vos codes
      • Eviter les confits de noms
    • Localiser les fonctions du namespace global
    • Le namespace std et C++ ANSI
  5. Gestion des exceptions

    • Qu'est qu'une exception ?
      • Types d'exceptions
      • Définition d'une classe d'exception
      • Les classes d'exceptions ANSI
    • Déclanchement d'exceptions
      • Attention au piège des constructeurs
    • Modes de traitement d'une exception
      • Capturer l'exception - instruction try ... catch
      • Relayer l'exception à la méthode appelante
    • Cas subtils d'utilisations des exceptions
      • Comment dépiler de plusieurs contextes
      • Contrôler l'exécution normale du programme
    • Les exceptions prédéfinies de la librairie ANSI
      • La classe <exception>
      • L'en-tête <stdexcept>
      • Quelques autres classes d'exception
  6. Rappels sur la généricité (Les templates)

    • Buts et intérêts de la généricité (factorisation de code)
    • Les fonctions génériques
      • Aspects syntaxiques
      • Où localiser le code d'une fonction générique
      • Pièges à éviter
    • Définitions de classes génériques
      • Aspects syntaxiques
      • Implémentation des méthodes génériques
    • Points subtils liés à la syntaxe des templates
  7. Utilisation de la STL (Standard Template Library)

    • Concepts généraux
      • Notions de conteneurs
      • Notions d'itérateurs
      • Les algorithmes des STL
      • Notion de functions/objects
    • Manipulations de quelques conteneurs
      • Utilisation des types vector et list
      • Les paires et les tables associatives
      • La STL et les streams
  8. Techniques de développement

    • Sensibilisation à l'utilisation de design patterns
    • Technique de développement RAII (Resource Acquisition Is Initialization)
    • Présentation rapide de la librairie Boost
      • Boost : un pas vers C++ 1x

© Infini Software - 2011 - Tous droits réservés - 06 63 33 14 06
439, chemin de la Ferrière - 06750 Valderoure


Filière Développement C/C++ : Formation Le langage C++ ANSI - Concepts avancés

Filière Développement C/C++ : Cours Le langage C++ ANSI - Concepts avancés

Quelques liens internet

Infini Software : Développement et formation Informatique - 06 Nice - St Laurent du Var - Sophia Antipolis
Infini Software : Développement et formation Informatique - 06 Nice - St Laurent du Var - Sophia Antipolis
Infini Software : Développement et formation Informatique - 06 Nice - St Laurent du Var - Sophia Antipolis
Infini Software : Développement et formation Informatique - 06 Nice - St Laurent du Var - Sophia Antipolis
Evolution MM Multimédia multimedia : Formation Informatique - 06 Nice - St Laurent du Var - Sophia Antipolis
DéveloppementFormationCatalogue de nos formationsConseilL'encyclopédieCoordonnées

Infini Software - Centre de Formation Informatique continue professionnelle

Formation Java - Formation J2EE - Formation .NET - Langage C, C++ - Formation Internet

Localisation : Sophia Antipolis Nice Alpes Maritimes 06 paca provence alpes cote d'azur Cours formation plan de cours formateur e-learning elearning langages informatique programmation c c++ java C# j2ee j2se jsp servlets Visual Basic HTML XML Javascript ASP .NET XML XSL CSS services web ado .net jdbc rmi ejb réseaux sockets Développement développements informatique développeur internet intranet extranet site web webagency agency logiciel progiciel organisme organismes systèmes embarqués embarquées temps réel Agréments certification certifié Microsoft Certified Professional MCP

Société de développement Informatique

Formation Informatique

Formations Informatique