Programmer en langage C++

Book description

Présentation
Acquérir une parfaite maîtrise du C++ et de la programmation objet

Programmer en langage C++ s'est imposé au fil de ses sept éditions successives comme la référence en langue française sur le C++. Il s'adresse aussi bien aux étudiants en programmation qu'aux développeurs professionnels souhaitant se former à ce langage ou en approfondir la maîtrise.

Après une présentation détaillée de la syntaxe de base du langage (types de données, opérateurs, instructions de contrôle, fonctions, tableaux, pointeurs...), l'auteur insiste tout particulièrement sur la bonne compréhension des concepts objet et sur l'acquisition de méthodes de programmation rigoureuses.

L'ouvrage couvre tous les aspects du langage et de sa bibliothèque standard (STL ou Standard Template Library), et traite en profondeur des points les plus délicats auxquels est confronté un programmeur C++ lors de la création de ses propres classes et de la conception d'applications professionnelles.

Cette 8e édition inclut un nouveau chapitre d'introduction aux design patterns en C++, ainsi qu'une annexe sur les extensions apportées par la nouvelle version de la norme ISO, connue sous le nom C++Ox, dont la publication finale est imminente.

Chaque notion nouvelle et chaque fonction du langage est illustrée de programmes complets dont le code source est fourni sur le site www.editions-eyrolles.com. Tout au long de l'ouvrage, des notes soulignent les différences majeures entre le C++ et Java, de manière à établir des passerelles entre les deux langages.

Au sommaire
  • Présentation du langage C ++
  • Généralités sur le langage C++
  • Les types de base du C++
  • Opérateurs et expressions
  • Les entrées-sorties conversationnelles du C++
  • Les instructions de contrôle
  • Les fonctions
  • Les tableaux et les pointeurs
  • Les chaînes de style C
  • Les types structure, union et énumération
  • Classes et objets
  • Les propriétés des fonctions membres
  • Construction, destruction et initialisation des objets
  • Les fonctions amies
  • La surdéfinition d'opérateurs
  • Les conversions de type définies par l'utilisateur
  • Les patrons de fonctions
  • Les patrons de classes
  • L'héritage simple
  • L'héritage multiple
  • Les fonctions virtuelles et le polymorphisme
  • Les flots
  • La gestion des exceptions
  • Généralités sur la bibliothèque standard (STL)
  • Les conteneurs séquentiels
  • Les conteneurs associatifs
  • Les algorithmes standards
  • La classe string
  • Les outils numériques
  • Les espaces de noms
  • Le préprocesseur et l'instruction typedef
  • Introduction au Design Patterns
  • Annexes
    • Règles de recherche d'une fonction surdéfinie
    • Compléments sur les exceptions
    • Les différents types de fonctions en C++
    • Comptage de références
    • Les pointeurs sur des membres
    • Les algorithmes standard
    • Les principales fonctions de la bibliothèque C standard
    • Les incompatibilités entre C et C++
    • C++Ox

Table of contents

  1. Couverture
  2. Titre
  3. Licence
  4. Table
  5. Avant-propos
    1. 1 Historique de C++
    2. 2 Objectifs et structure de l’ouvrage
    3. 3 L’ouvrage, C, C++ et Java
  6. Chapitre 1 - Présentation du langage C++
    1. 1 Programmation structurée et programmation orientée objet
      1. 1.1 Problématique de la programmation
      2. 1.2 La programmation structurée
      3. 1.3 Les apports de la programmation orientée objet
        1. 1.3.1 Objet
        2. 1.3.2 Encapsulation
        3. 1.3.3 Classe
        4. 1.3.4 Héritage
        5. 1.3.5 Polymorphisme
      4. 1.4 P.O.O., langages de programmation et C++
    2. 2 C++ et la programmation structurée
    3. 3 C++ et la programmation orientée objet
    4. 4 C et C++
    5. 5 C++ et la bibliothèque standard
  7. Chapitre 2 - Généralités sur le langage C++
    1. 1 Présentation par l’exemple de quelques instructions du langage C++
      1. 1.1 Un exemple de programme en langage C++
      2. 1.2 Structure d’un programme en langage C++
      3. 1.3 Déclarations
      4. 1.4 Pour écrire des informations : utiliser le flot cout
      5. 1.5 Pour faire une répétition : l’instruction for
      6. 1.6 Pour lire des informations : utiliser le flot cin
      7. 1.7 Pour faire des choix : l’instruction if
      8. 1.8 Les directives à destination du préprocesseur
      9. 1.9 L’instruction using
      10. 1.10 Exemple de programme utilisant le type caractère
    2. 2 Quelques règles d’écriture
      1. 2.1 Les identificateurs
      2. 2.2 Les mots-clés
      3. 2.3 Les séparateurs
      4. 2.4 Le format libre
      5. 2.5 Les commentaires
        1. 2.5.1 Les commentaires libres
        2. 2.5.2 Les commentaires de fin de ligne
    3. 3 Création d’un programme en C++
      1. 3.1 L’édition du programme
      2. 3.2 La compilation
      3. 3.3 L’édition de liens
      4. 3.4 Les fichiers en-tête
  8. Chapitre 3 - Les types de base de C++
    1. 1 La notion de type
    2. 2 Les types entiers
      1. 2.1 Les différents types usuels d’entiers prévus par C++
      2. 2.2 Leur représentation en mémoire
      3. 2.3 Les types entiers non signés
      4. 2.4 Notation des constantes entières
    3. 3 Les types flottants
      1. 3.1 Les différents types et leur représentation en mémoire
      2. 3.2 Notation des constantes flottantes
    4. 4 Les types caractères
      1. 4.1 La notion de caractère en langage C++
      2. 4.2 Notation des constantes caractères
    5. 5 Initialisation et constantes
    6. 6 Le type bool
  9. Chapitre 4 - Opérateurs et expressions
    1. 1 Originalité des notions d’opérateur et d’expression en C++
    2. 2 Les opérateurs arithmétiques en C++
      1. 2.1 Présentation des opérateurs
      2. 2.2 Les priorités relatives des opérateurs
      3. 2.3 Comportement des opérateurs en cas d’exception
    3. 3 Les conversions implicites pouvant intervenir dans un calcul d’expression
      1. 3.1 Notion d’expression mixte
      2. 3.2 Les conversions usuelles d’ajustement de type
      3. 3.3 Les promotions numériques usuelles
        1. 3.3.1 Généralités
        2. 3.3.2 Cas du type char
        3. 3.3.3 Cas du type bool
      4. 3.4 Les conversions en présence de types non signés
        1. 3.4.1 Cas des entiers
        2. 3.4.2 Cas des caractères
    4. 4 Les opérateurs relationnels
      1. Cas des comparaisons de caractères
    5. 5 Les opérateurs logiques
      1. 5.1 Rôle
      2. 5.2 Court-circuit dans l’évaluation de && et ||
    6. 6 L’opérateur d’affectation ordinaire
      1. 6.1 Notion de lvalue
      2. 6.2 L’opérateur d’affectation possède une associativité de droite à gauche
      3. 6.3 L’affectation peut entraîner une conversion
    7. 7 Opérateurs d’incrémentation et de décrémentation
      1. 7.1 Leur rôle
      2. 7.2 Leurs priorités
      3. 7.3 Leur intérêt
    8. 8 Les opérateurs d’affectation élargie
    9. 9 Les conversions forcées par une affectation
      1. 9.1 Cas usuels
      2. 9.2 Prise en compte d’un attribut de signe
    10. 10 L’opérateur de cast
    11. 11 L’opérateur conditionnel
    12. 12 L’opérateur séquentiel
    13. 13 L’opérateur sizeof
    14. 14 Les opérateurs de manipulation de bits
      1. 14.1 Présentation des opérateurs de manipulation de bits
      2. 14.2 Les opérateurs bit à bit
      3. 14.3 Les opérateurs de décalage
      4. 14.4 Exemples d’utilisation des opérateurs de bits
    15. 15 Récapitulatif des priorités de tous les opérateurs
  10. Chapitre 5 - Les entrées-sorties conversationnelles de C++
    1. 1 Affichage à l’écran
      1. 1.1 Exemple 1
      2. 1.2 Exemple 2
      3. 1.3 Les possibilités d’écriture sur cout
    2. 2 Lecture au clavier
      1. 2.1 Introduction
      2. 2.2 Les différentes possibilités de lecture sur cin
      3. 2.3 Notions de tampon et de caractères séparateurs
      4. 2.4 Premières règles utilisées par >>
      5. 2.5 Présence d’un caractère invalide dans une donnée
      6. 2.6 Les risques induits par la lecture au clavier
        1. 2.6.1 Manque de synchronisme entre clavier et écran
        2. 2.6.2 Blocage de la lecture
        3. 2.6.3 Boucle infinie sur un caractère invalide
  11. Chapitre 6 - Les instructions de contrôle
    1. 1 Les blocs d’instructions
      1. 1.1 Blocs d’instructions
      2. 1.2 Déclarations dans un bloc
    2. 2 L’instruction if
      1. 2.1 Syntaxe de l’instruction if
      2. 2.2 Exemples
      3. 2.3 Imbrication des instructions if
    3. 3 L’instruction switch
      1. 3.1 Exemples d’introduction de l’instruction switch
        1. a) Premier exemple
        2. b) Étiquette default
        3. c) Exemple plus général
      2. 3.2 Syntaxe de l’instruction switch
        1. Commentaires :
    4. 4 L’instruction do... while
      1. 4.1 Exemple d’introduction de l’instruction do... while
      2. 4.2 Syntaxe de l’instruction do... while
        1. Commentaires
    5. 5 L’instruction while
      1. 5.1 Exemple d’introduction de l’instruction while
      2. 5.2 Syntaxe de l’instruction while
        1. Commentaires
    6. 6 L’instruction for
      1. 6.1 Exemple d’introduction de l’instruction for
      2. 6.2 L’instruction for en général
      3. 6.3 Syntaxe de l’instruction for
        1. Commentaires
    7. 7 Les instructions de branchement inconditionnel : break, continue et goto
      1. 7.1 L’instruction break
      2. 7.2 L’instruction continue
      3. 7.3 L’instruction goto
  12. Chapitre 7 - Les fonctions
    1. 1 Exemple de définition et d’utilisation d’une fonction
    2. 2 Quelques règles
      1. 2.1 Arguments muets et arguments effectifs
      2. 2.2 L’instruction return
      3. 2.3 Cas des fonctions sans valeur de retour ou sans arguments
    3. 3 Les fonctions et leurs déclarations
      1. 3.1 Les différentes façons de déclarer une fonction
      2. 3.2 Où placer la déclaration d’une fonction
      3. 3.3 Contrôles et conversions induites par le prototype
    4. 4 Transmission des arguments par valeur
    5. 5 Transmission par référence
      1. 5.1 Exemple de transmission d’argument par référence
      2. 5.2 Propriétés de la transmission par référence d’un argument
        1. 5.2.1 Appel de la fonction
        2. 5.2.2 Cas d’un argument muet constant
        3. 5.2.3 Induction de risques indirects
    6. 6 Les variables globales
      1. 6.1 Exemple d’utilisation de variables globales
      2. 6.2 La portée des variables globales
      3. 6.3 La classe d’allocation des variables globales
    7. 7 Les variables locales
      1. 7.1 La portée des variables locales
      2. 7.2 Les variables locales automatiques
      3. 7.3 Les variables locales statiques
      4. 7.4 Variables locales à un bloc
      5. 7.5 Le cas des fonctions récursives
    8. 8 Initialisation des variables
      1. 8.1 Les variables de classe statique
      2. 8.2 Les variables de classe automatique
    9. 9 Les arguments par défaut
      1. 9.1 Exemples
        1. Exemple 1
        2. Exemple 2
      2. 9.2 Les propriétés des arguments par défaut
    10. 10 Surdéfinition de fonctions
      1. 10.1 Mise en œuvre de la surdéfinition de fonctions
      2. 10.2 Exemples de choix d’une fonction surdéfinie
        1. Exemple 1
        2. Exemple 2
        3. Exemple 3
        4. Exemple 4
        5. Exemple 5
        6. Exemple 6
      3. 10.3 Règles de recherche d’une fonction surdéfinie
        1. 10.3.1 Cas des fonctions à un argument
        2. 10.3.2 Cas des fonctions à plusieurs arguments
    11. 11 Les arguments variables en nombre
      1. 11.1 Premier exemple
      2. 11.2 Second exemple
    12. 12 La conséquence de la compilation séparée
      1. 12.1 Compilation séparée et prototypes
      2. 12.2 Fonction manquante lors de l’édition de liens
      3. 12.3 Le mécanisme de la surdéfinition de fonctions
      4. 12.4 Compilation séparée et variables globales
        1. 12.4.1 La portée d’une variable globale – la déclaration extern
        2. 12.4.2 Les variables globales et l’édition de liens
        3. 12.4.3 Les variables globales cachées – la déclaration static
    13. 13 Compléments sur les références
      1. 13.1 Transmission par référence d’une valeur de retour
        1. 13.1.1 Introduction
        2. 13.1.2 Conséquences dans la définition de la fonction
        3. 13.1.3 Conséquences dans l’utilisation de la fonction
        4. 13.1.4 Exemple
        5. 13.1.5 Valeur de retour constante
      2. 13.2 La référence d’une manière générale
        1. 13.2.1 La notion de référence est plus générale que celle d’argument
        2. 13.2.2 Initialisation de référence
    14. 14 La spécification inline
    15. 15 Terminaison d’un programme
  13. Chapitre 8 - Les tableaux et les pointeurs
    1. 1 Les tableaux à un indice
      1. 1.1 Exemple d’utilisation d’un tableau en C++
      2. 1.2 Quelques règles
        1. 1.2.1 Les éléments de tableau
        2. 1.2.2 Les indices
        3. 1.2.3 La dimension d’un tableau
        4. 1.2.4 Débordement d’indice
    2. 2 Les tableaux à plusieurs indices
      1. 2.1 Leur déclaration
      2. 2.2 Arrangement en mémoire des tableaux à plusieurs indices
    3. 3 Initialisation des tableaux
      1. 3.1 Initialisation de tableaux à un indice
      2. 3.2 Initialisation de tableaux à plusieurs indices
      3. 3.3 Initialiseurs et classe d’allocation
    4. 4 Notion de pointeur – Les opérateurs * et &
      1. 4.1 Introduction
      2. 4.2 Quelques exemples
      3. 4.3 Incrémentation de pointeurs
    5. 5 Comment simuler une transmission par adresse avec un pointeur
    6. 6 Un nom de tableau est un pointeur constant
      1. 6.1 Cas des tableaux à un indice
      2. 6.2 Cas des tableaux à plusieurs indices
    7. 7 Les opérations réalisables sur des pointeurs
      1. 7.1 La comparaison de pointeurs
      2. 7.2 La soustraction de pointeurs
      3. 7.3 Les affectations de pointeurs et le pointeur nul
      4. 7.4 Les conversions de pointeurs
      5. 7.5 Les pointeurs génériques
    8. 8 La gestion dynamique : les opérateurs new et delete
      1. 8.1 L’opérateur new
        1. Exemple 1
        2. Exemple 2
        3. Syntaxe et rôle de new
      2. 8.2 L’opérateur delete
      3. 8.3 Exemple
    9. 9 Pointeurs et surdéfinition de fonctions
      1. Exemple 1
      2. Exemple 2
      3. Exemple 3
    10. 10 Les tableaux transmis en argument
      1. 10.1 Cas des tableaux à un indice
        1. 10.1.1 Premier exemple : tableau de taille fixe
        2. 10.1.2 Second exemple : tableau de taille variable
      2. 10.2 Cas des tableaux à plusieurs indices
        1. 10.2.1 Premier exemple : tableau de taille fixe
        2. 10.2.2 Second exemple : tableau de dimensions variables
    11. 11 Utilisation de pointeurs sur des fonctions
      1. 11.1 Paramétrage d’appel de fonctions
      2. 11.2 Fonctions transmises en argument
  14. Chapitre 9 - Les chaînes de style C
    1. 1 Représentation des chaînes
      1. 1.1 La convention adoptée
      2. 1.2 Cas des chaînes constantes
    2. 2 Lecture et écriture de chaînes de style C
    3. 3 Initialisation de tableaux par des chaînes
      1. 3.1 Initialisation de tableaux de caractères
      2. 3.2 Initialisation de tableaux de pointeurs sur des chaînes
    4. 4 Les arguments transmis à la fonction main
      1. 4.1 Comment passer des arguments à un programme
      2. 4.2 Comment récupérer ces arguments dans la fonction main
    5. 5 Généralités sur les fonctions portant sur des chaînes de style C
      1. 5.1 Ces fonctions travaillent toujours sur des adresses
      2. 5.2 La fonction strlen
      3. 5.3 Le cas des fonctions de concaténation
    6. 6 Les fonctions de concaténation de chaînes
      1. 6.1 La fonction strcat
      2. 6.2 La fonction strncat
    7. 7 Les fonctions de comparaison de chaînes
    8. 8 Les fonctions de copie de chaînes
    9. 9 Les fonctions de recherche dans une chaîne
    10. 10 Quelques précautions à prendre avec les chaînes de style C
      1. 10.1 Une chaîne de style C possède une vraie fin, mais pas de vrai début
      2. 10.2 Les risques de modification des chaînes constantes
  15. Chapitre 10 - Les types structure, union et énumération
    1. 1 Déclaration d’une structure
    2. 2 Utilisation d’une structure
      1. 2.1 Utilisation des champs d’une structure
      2. 2.2 Utilisation globale d’une structure
      3. 2.3 Initialisation de structures
    3. 3 Imbrication de structures
      1. 3.1 Structure comportant des tableaux
      2. 3.2 Tableaux de structures
      3. 3.3 Structures comportant d’autres structures
      4. 3.4 Cas particulier de structure renfermant un pointeur
    4. 4 À propos de la portée du type de structure
    5. 5 Transmission d’une structure en argument d’une fonction
      1. 5.1 Transmission d’une structure par valeur
      2. 5.2 Transmission d’une structure par référence
      3. 5.3 Transmission de l’adresse d’une structure : l’opérateur ->
    6. 6 Transmission d’une structure en valeur de retour d’une fonction
    7. 7 Les champs de bits
    8. 8 Les unions
    9. 9 Les énumérations
      1. 9.1 Exemples introductifs
      2. 9.2 Propriétés du type énumération
        1. Nature des constantes figurant dans un type énumération
        2. Une variable d’un type énumération peut recevoir une valeur quelconque
        3. Les constantes d’un type énumération peuvent être quelconques
  16. Chapitre 11 - Classes et objets
    1. 1 Les structures généralisées
      1. 1.1 Déclaration des fonctions membres d’une structure
      2. 1.2 Définition des fonctions membres d’une structure
      3. 1.3 Utilisation d’une structure généralisée
      4. 1.4 Exemple récapitulatif
    2. 2 Notion de classe
    3. 3 Affectation d’objets
    4. 4 Notions de constructeur et de destructeur
      1. 4.1 Introduction
      2. 4.2 Exemple de classe comportant un constructeur
      3. 4.3 Construction et destruction des objets
      4. 4.4 Rôles du constructeur et du destructeur
      5. 4.5 Quelques règles
    5. 5 Les membres données statiques
      1. 5.1 Le qualificatif static pour un membre donnée
      2. 5.2 Initialisation des membres données statiques
      3. 5.3 Exemple
    6. 6 Exploitation d’une classe
      1. 6.1 La classe comme composant logiciel
      2. 6.2 Protection contre les inclusions multiples
      3. 6.3 Cas des membres données statiques
      4. 6.4 Modification d’une classe
        1. 6.4.1 Notion d’interface et d’implémentation
        2. 6.4.2 Modification d’une classe sans modification de son interface
        3. 6.4.3 Modification d’une classe avec modification de son interface
    7. 7 Les classes en général
      1. 7.1 Les autres sortes de classes en C++
      2. 7.2 Ce qu’on peut trouver dans la déclaration d’une classe
      3. 7.3 Emplacement de la déclaration d’une classe
  17. Chapitre 12 - Les propriétés des fonctions membres
    1. 1 Surdéfinition des fonctions membres
    2. 2 Arguments par défaut
    3. 3 Les fonctions membres en ligne
    4. 4 Cas des objets transmis en argument d’une fonction membre
    5. 5 Mode de transmission des objets en argument
      1. 5.1 Transmission de l’adresse d’un objet
      2. 5.2 Transmission par référence
      3. 5.3 Les problèmes posés par la transmission par valeur
    6. 6 Lorsqu’une fonction renvoie un objet
    7. 7 Autoréférence : le mot clé this
    8. 8 Les fonctions membres statiques
    9. 9 Les fonctions membres constantes
      1. 9.1 Définition d’une fonction membre constante
      2. 9.2 Propriétés d’une fonction membre constante
    10. 10 Les membres mutables
  18. Chapitre 13 - Construction, destruction et initialisation des objets
    1. 1 Les objets automatiques et statiques
      1. 1.1 Durée de vie
      2. 1.2 Appel des constructeurs et des destructeurs
      3. 1.3 Exemple
    2. 2 Les objets dynamiques
      1. 2.1 Cas d’une classe sans constructeur
      2. 2.2 Cas d’une classe avec constructeur
      3. 2.3 Exemple
    3. 3 Le constructeur de recopie
      1. 3.1 Présentation
        1. 3.1.1 Il n’existe pas de constructeur approprié
        2. 3.1.2 Il existe un constructeur approprié
        3. 3.1.3 Lorsqu’on souhaite interdire la contruction par recopie
      2. 3.2 Exemple 1 : objet transmis par valeur
        1. 3.2.1 Emploi du constructeur de recopie par défaut
        2. 3.2.2 Définition d’un constructeur de recopie
      3. 3.3 Exemple 2 : objet en valeur de retour d’une fonction
    4. 4 Initialisation d’un objet lors de sa déclaration
    5. 5 Objets membres
      1. 5.1 Introduction
      2. 5.2 Mise en œuvre des constructeurs et des destructeurs
      3. 5.3 Le constructeur de recopie
    6. 6 Initialisation de membres dans l’en-tête d’un constructeur
    7. 7 Les tableaux d’objets
      1. 7.1 Notations
      2. 7.2 Constructeurs et initialiseurs
      3. 7.3 Cas des tableaux dynamiques d’objets
    8. 8 Les objets temporaires
  19. Chapitre 14 - Les fonctions amies
    1. 1 Exemple de fonction indépendante amie d’une classe
    2. 2 Les différentes situations d’amitié
      1. 2.1 Fonction membre d’une classe, amie d’une autre classe
      2. 2.2 Fonction amie de plusieurs classes
      3. 2.3 Toutes les fonctions d’une classe amies d’une autre classe
    3. 3 Exemple
      1. 3.1 Fonction amie indépendante
      2. 3.2 Fonction amie, membre d’une classe
    4. 4 Exploitation de classes disposant de fonctions amies
  20. Chapitre 15 - La surdéfinition d’opérateurs
    1. 1 Le mécanisme de la surdéfinition d’opérateurs
      1. 1.1 Surdéfinition d’opérateur avec une fonction amie
      2. 1.2 Surdéfinition d’opérateur avec une fonction membre
      3. 1.3 Opérateurs et transmission par référence
    2. 2 La surdéfinition d’opérateurs en général
      1. 2.1 Se limiter aux opérateurs existants
      2. 2.2 Se placer dans un contexte de classe
      3. 2.3 Éviter les hypothèses sur le rôle d’un opérateur
      4. 2.4 Cas des opérateurs ++ et --
      5. 2.5 L’opérateur = possède une signification prédéfinie
      6. 2.6 Les conversions
      7. 2.7 Choix entre fonction membre et fonction amie
    3. 3 Surdéfinition de l’opérateur =
      1. 3.1 Rappels concernant le constructeur par recopie
      2. 3.2 Cas de l’affectation
      3. 3.3 Algorithme proposé
      4. 3.4 Valeur de retour
      5. 3.5 En définitive
      6. 3.6 Exemple de programme complet
      7. 3.7 Lorsqu’on souhaite interdire l’affectation
    4. 4 La forme canonique d’une classe
      1. 4.1 Cas général
    5. 5 Exemple de surdéfinition de l’opérateur [ ]
    6. 6 Surdéfinition de l’opérateur ()
    7. 7 Surdéfinition des opérateurs new et delete
      1. 7.1 Surdéfinition de new et delete pour une classe donnée
      2. 7.2 Exemple
      3. 7.3 D’une manière générale
  21. Chapitre 16 - Les conversions de type définies par l’utilisateur
    1. 1 Les différentes sortes de conversions définies par l’utilisateur
    2. 2 L’opérateur de cast pour la conversion type classe –> type de base
      1. 2.1 Définition de l’opérateur de cast
      2. 2.2 Exemple d’utilisation
      3. 2.3 Appel implicite de l’opérateur de cast lors d’un appel de fonction
      4. 2.4 Appel implicite de l’opérateur de cast dans l’évaluation d’une expression
      5. 2.5 Conversions en chaîne
      6. 2.6 En cas d’ambiguïté
    3. 3 Le constructeur pour la conversion type de base -> type classe
      1. 3.1 Exemple
      2. 3.2 Le constructeur dans une chaîne de conversions
      3. 3.3 Choix entre constructeur ou opérateur d’affectation
      4. 3.4 Emploi d’un constructeur pour élargir la signification d’un opérateur
      5. 3.5 Interdire les conversions implicites par le constructeur : le rôle d’explicit
    4. 4 Les conversions d’un type classe en un autre type classe
      1. 4.1 Exemple simple d’opérateur de cast
      2. 4.2 Exemple de conversion par un constructeur
      3. 4.3 Pour donner une signification à un opérateur défini dans une autre classe
    5. 5 Quelques conseils
  22. Chapitre 17 - Les patrons de fonctions
    1. 1 Exemple de création et d’utilisation d’un patron de fonctions
      1. 1.1 Création d’un patron de fonctions
      2. 1.2 Premières utilisations du patron de fonctions
      3. 1.3 Autres utilisations du patron de fonctions
        1. 1.3.1 Application au type char *
        2. 1.3.2 Application à un type classe
      4. 1.4 Contraintes d’utilisation d’un patron
    2. 2 Les paramètres de type d’un patron de fonctions
      1. 2.1 Utilisation des paramètres de type dans la définition d’un patron
      2. 2.2 Identification des paramètres de type d’une fonction patron
      3. 2.3 Nouvelle syntaxe d’initialisation des variables des types standard
      4. 2.4 Limitations des patrons de fonctions
    3. 3 Les paramètres expressions d’un patron de fonctions
    4. 4 Surdéfinition de patrons
      1. 4.1 Exemples ne comportant que des paramètres de type
      2. 4.2 Exemples comportant des paramètres expressions
    5. 5 Spécialisation de fonctions de patron
      1. 5.1 Généralités
      2. 5.2 Les spécialisations partielles
    6. 6 Algorithme d’instanciation d’une fonction patron
      1. Exemple 1
      2. Exemple 2
      3. Exemple 3
  23. Chapitre 18 - Les patrons de classes
    1. 1 Exemple de création et d’utilisation d’un patron de classes
      1. 1.1 Création d’un patron de classes
      2. 1.2 Utilisation d’un patron de classes
      3. 1.3 Contraintes d’utilisation d’un patron de classes
      4. 1.4 Exemple récapitulatif
    2. 2 Les paramètres de type d’un patron de classes
      1. 2.1 Les paramètres de type dans la création d’un patron de classes
      2. 2.2 Instanciation d’une classe patron
    3. 3 Les paramètres expressions d’un patron de classes
      1. 3.1 Exemple
      2. 3.2 Les propriétés des paramètres expressions
    4. 4 Spécialisation d’un patron de classes
      1. 4.1 Exemple de spécialisation d’une fonction membre
      2. 4.2 Les différentes possibilités de spécialisation
        1. 4.2.1 On peut spécialiser une fonction membre pour tous les paramètres
        2. 4.2.2 On peut spécialiser une fonction membre ou une classe
        3. 4.2.3 On peut prévoir des spécialisations partielles de patrons de classes
    5. 5 Paramètres par défaut
    6. 6 Patrons de fonctions membres
    7. 7 Identité de classes patrons
    8. 8 Classes patrons et déclarations d’amitié
      1. 8.1 Déclaration de classes ou fonctions « ordinaires » amies
      2. 8.2 Déclaration d’instances particulières de classes patrons ou de fonctions patrons
      3. 8.3 Déclaration d’un autre patron de fonctions ou de classes
    9. 9 Exemple de classe tableau à deux indices
  24. Chapitre 19 - L’héritage simple
    1. 1 La notion d’héritage
    2. 2 Utilisation des membres de la classe de base dans une classe dérivée
    3. 3 Redéfinition des membres d’une classe dérivée
      1. 3.1 Redéfinition des fonctions membres d’une classe dérivée
      2. 3.2 Redéfinition des membres données d’une classe dérivée
      3. 3.3 Redéfinition et surdéfinition
    4. 4 Appel des constructeurs et des destructeurs
      1. 4.1 Rappels
      2. 4.2 La hiérarchisation des appels
      3. 4.3 Transmission d’informations entre constructeurs
      4. 4.4 Exemple
      5. 4.5 Compléments
    5. 5 Contrôle des accès
      1. 5.1 Les membres protégés
      2. 5.2 Exemple
      3. 5.3 Intérêt du statut protégé
      4. 5.4 Dérivation publique et dérivation privée
        1. 5.4.1 Rappels concernant la dérivation publique
        2. 5.4.2 Dérivation privée
        3. 5.4.3 Les possibilités de dérivation protégée
      5. 5.5 Récapitulation
    6. 6 Compatibilité entre classe de base et classe dérivée
      1. 6.1 Conversion d’un type dérivé en un type de base
      2. 6.2 Conversion de pointeurs
      3. 6.3 Limitations liées au typage statique des objets
      4. 6.4 Les risques de violation des protections de la classe de base
    7. 7 Le constructeur de recopie et l’héritage
      1. 7.1 La classe dérivée ne définit pas de constructeur de recopie
      2. 7.2 La classe dérivée définit un constructeur de recopie
    8. 8 L’opérateur d’affectation et l’héritage
      1. 8.1 La classe dérivée ne surdéfinit pas l’opérateur =
      2. 8.2 La classe dérivée surdéfinit l’opérateur =
    9. 9 Héritage et forme canonique d’une classe
    10. 10 L’héritage et ses limites
      1. 10.1 La situation d’héritage
        1. 10.1.1 Le type du résultat de l’appel
        2. 10.1.2 Le type des arguments de f
      2. 10.2 Exemples
        1. 10.2.1 Héritage dans pointcol d’un opérateur + défini dans point
        2. 10.2.2 Héritage dans pointcol de la fonction coincide de point
    11. 11 Exemple de classe dérivée
    12. 12 Patrons de classes et héritage
      1. 12.1 Classe « ordinaire » dérivant d’une classe patron
      2. 12.2 Dérivation de patrons avec les mêmes paramètres
      3. 12.3 Dérivation de patrons avec introduction d’un nouveau paramètre
    13. 13 L’héritage en pratique
      1. 13.1 Dérivations successives
      2. 13.2 Différentes utilisations de l’héritage
      3. 13.3 Exploitation d’une classe dérivée
  25. Chapitre 20 - L’héritage multiple
    1. 1 Mise en œuvre de l’héritage multiple
    2. 2 Pour régler les éventuels conflits : les classes virtuelles
    3. 3 Appels des constructeurs et des destructeurs : cas des classes virtuelles
    4. 4 Exemple d’utilisation de l’héritage multiple et de la dérivation virtuelle
  26. Chapitre 21 - Les fonctions virtuelles et le polymorphisme
    1. 1 Rappel d’une situation où le typage dynamique est nécessaire
    2. 2 Le mécanisme des fonctions virtuelles
    3. 3 Autre situation où la ligature dynamique est indispensable
    4. 4 Les propriétés des fonctions virtuelles
      1. 4.1 Leurs limitations sont celles de l’héritage
      2. 4.2 La redéfinition d’une fonction virtuelle n’est pas obligatoire
      3. 4.3 Fonctions virtuelles et surdéfinition
      4. 4.4 Le type de retour d’une fonction virtuelle redéfinie
      5. 4.5 On peut déclarer une fonction virtuelle dans n’importe quelle classe
      6. 4.6 Quelques restrictions et conseils
        1. 4.6.1 Seule une fonction membre peut être virtuelle
        2. 4.6.2 Un constructeur ne peut pas être virtuel
        3. 4.6.3 Un destructeur peut être virtuel
        4. 4.6.4 Cas particulier de l’opérateur d’affectation
    5. 5 Les fonctions virtuelles pures pour la création de classes abstraites
    6. 6 Exemple d’utilisation de fonctions virtuelles : liste hétérogène
    7. 7 Le mécanisme d’identification dynamique des objets
    8. 8 Identification de type à l’exécution
      1. 8.1 Utilisation du champ name de type_info
      2. 8.2 Utilisation des opérateurs de comparaison de type_info
      3. 8.3 Exemple avec des références
    9. 9 Les cast dynamiques
  27. Chapitre 22 - Les flots
    1. 1 Présentation générale de la classe ostream
      1. 1.1 L’opérateur <<
      2. 1.2 Les flots prédéfinis
      3. 1.3 La fonction put
      4. 1.4 La fonction write
        1. 1.4.1 Cas des caractères
        2. 1.4.2 Autres cas
      5. 1.5 Quelques possibilités de formatage avec <<
        1. 1.5.1 Action sur la base de numération
        2. 1.5.2 Action sur le gabarit de l’information écrite
        3. 1.5.3 Action sur la précision de l’information écrite
        4. 1.5.4 Choix entre notation flottante ou exponentielle
        5. 1.5.5 Un programme de facturation amélioré
    2. 2 Présentation générale de la classe istream
      1. 2.1 L’opérateur >>
        1. 2.1.1 Cas des caractères
        2. 2.1.2 Cas des chaînes de style C
        3. 2.1.3 Les types acceptés par >>
      2. 2.2 La fonction get
      3. 2.3 Les fonctions getline et gcount
      4. 2.4 La fonction read
        1. 2.4.1 Cas des caractères
        2. 2.4.2 Autres cas
      5. 2.5 Quelques autres fonctions
    3. 3 Statut d’erreur d’un flot
      1. 3.1 Les bits d’erreur
      2. 3.2 Actions concernant les bits d’erreur
        1. 3.2.1 Accès aux bits d’erreur
        2. 3.2.2 Modification du statut d’erreur
      3. 3.3 Surdéfinition des opérateurs () et !
      4. 3.4 Exemples
    4. 4 Surdéfinition de << et >> pour les types définis par l’utilisateur
      1. 4.1 Méthode
      2. 4.2 Exemple
    5. 5 Gestion du formatage
      1. 5.1 Le statut de formatage d’un flot
      2. 5.2 Description du mot d’état du statut de formatage
      3. 5.3 Action sur le statut de formatage
        1. 5.3.1 Les manipulateurs non paramétriques
        2. 5.3.2 Les manipulateurs paramétriques
        3. 5.3.3 Les fonctions membres
          1. setf
          2. unsetf
          3. fill
          4. precision
          5. width
        4. 5.3.4 Exemple
    6. 6 Connexion d’un flot à un fichier
      1. 6.1 Connexion d’un flot de sortie à un fichier
      2. 6.2 Connexion d’un flot d’entrée à un fichier
      3. 6.3 Les possibilités d’accès direct
      4. 6.4 Les différents modes d’ouverture d’un fichier
    7. 7 Les anciennes possibilités de formatage en mémoire
      1. 7.1 La classe ostrstream
      2. 7.2 La classe istrstream
  28. Chapitre 23 - La gestion des exceptions
    1. 1 Premier exemple d’exception
      1. 1.1 Comment lancer une exception : l’instruction throw
      2. 1.2 Utilisation d’un gestionnaire d’exception
      3. 1.3 Récapitulatif
    2. 2 Second exemple
    3. 3 Le mécanisme de gestion des exceptions
      1. 3.1 Poursuite de l’exécution du programme
      2. 3.2 Prise en compte des sorties de blocs
    4. 4 Choix du gestionnaire
      1. 4.1 Le gestionnaire reçoit toujours une copie
      2. 4.2 Règles de choix d’un gestionnaire d’exception
      3. 4.3 Le cheminement des exceptions
      4. 4.4 Redéclenchement d’une exception
    5. 5 Spécification d’interface : la fonction unexpected
    6. 6 Les exceptions standard
      1. 6.1 Généralités
      2. 6.2 Les exceptions déclenchées par la bibliothèque standard
      3. 6.3 Les exceptions utilisables dans un programme
      4. 6.4 Cas particulier de la gestion dynamique de mémoire
        1. 6.4.1 L’opérateur new (nothrow)
        2. 6.4.2 Gestion des débordements de mémoire avec set_new_handler
      5. 6.5 Création d’exceptions dérivées de la classe exception
        1. 6.5.1 Exemple 1
        2. 6.5.2 Exemple 2
  29. Chapitre 24 - Généralités sur la bibliothèque standard
    1. 1 Notions de conteneur, d’itérateur et d’algorithme
      1. 1.1 Notion de conteneur
      2. 1.2 Notion d’itérateur
      3. 1.3 Parcours d’un conteneur avec un itérateur
        1. 1.3.1 Parcours direct
        2. 1.3.2 Parcours inverse
      4. 1.4 Intervalle d’itérateur
      5. 1.5 Notion d’algorithme
      6. 1.6 Itérateurs et pointeurs
    2. 2 Les différentes sortes de conteneurs
      1. 2.1 Conteneurs et structures de données classiques
      2. 2.2 Les différentes catégories de conteneurs
    3. 3 Les conteneurs dont les éléments sont des objets
      1. 3.1 Construction, copie et affectation
      2. 3.2 Autres opérations
    4. 4 Efficacité des opérations sur des conteneurs
    5. 5 Fonctions, prédicats et classes fonctions
      1. 5.1 Fonction unaire
      2. 5.2 Prédicats
      3. 5.3 Classes et objets fonctions
        1. 5.3.1 Utilisation d’objet fonction comme fonction de rappel
        2. 5.3.2 Classes fonctions prédéfinies
    6. 6 Conteneurs, algorithmes et relation d’ordre
      1. 6.1 Introduction
      2. 6.2 Propriétés à respecter
    7. 7 Les générateurs d’opérateurs
  30. Chapitre 25 - Les conteneurs séquentiels
    1. 1 Fonctionnalités communes aux conteneurs vector, list et deque
      1. 1.1 Construction
        1. 1.1.1 Construction d’un conteneur vide
        2. 1.1.2 Construction avec un nombre donné d’éléments
        3. 1.1.3 Construction avec un nombre donné d’éléments de valeur donnée
        4. 1.1.4 Construction à partir d’une séquence
        5. 1.1.5 Construction à partir d’un autre conteneur de même type
      2. 1.2 Modifications globales
        1. 1.2.1 Opérateur d’affectation
        2. 1.2.2 La fonction membre assign
        3. 1.2.3 La fonction clear
        4. 1.2.4 La fonction swap
      3. 1.3 Comparaison de conteneurs
        1. 1.3.1 L’opérateur ==
        2. 1.3.2 L’opérateur <
        3. 1.3.3 Exemples
      4. 1.4 Insertion ou suppression d’éléments
        1. 1.4.1 Insertion
        2. 1.4.2 Suppression
        3. 1.4.3 Cas des insertions/suppressions en fin : pop_back et push_back
    2. 2 Le conteneur vector
      1. 2.1 Accès aux éléments existants
        1. 2.1.1 Accès par itérateur
        2. 2.1.2 Accès par indice
        3. 2.1.3 Cas de l’accès au dernier élément
      2. 2.2 Insertions et suppressions
      3. 2.3 Gestion de l’emplacement mémoire
        1. 2.3.1 Introduction
        2. 2.3.2 Invalidation d’itérateurs ou de références
        3. 2.3.3 Outils de gestion de l’emplacement mémoire d’un vecteur
      4. 2.4 Exemple
      5. 2.5 Cas particulier des vecteurs de booléens
    3. 3 Le conteneur deque
      1. 3.1 Présentation générale
      2. 3.2 Exemple
    4. 4 Le conteneur list
      1. 4.1 Accès aux éléments existants
      2. 4.2 Insertions et suppressions
        1. 4.2.1 Suppression des éléments de valeur donnée
        2. 4.2.2 Suppression des éléments répondant à une condition
      3. 4.3 Opérations globales
        1. 4.3.1 Tri d’une liste
        2. 4.3.2 Suppression des éléments en double
        3. 4.3.3 Fusion de deux listes
        4. 4.3.4 Transfert d’une partie de liste dans une autre
      4. 4.4 Gestion de l’emplacement mémoire
      5. 4.5 Exemple
    5. 5 Les adaptateurs de conteneur : queue, stack et priority_queue
      1. 5.1 L’adaptateur stack
      2. 5.2 L’adaptateur queue
      3. 5.3 L’adaptateur priority_queue
  31. Chapitre 26 - Les conteneurs associatifs
    1. 1 Le conteneur map
      1. 1.1 Exemple introductif
      2. 1.2 Le patron de classes pair
      3. 1.3 Construction d’un conteneur de type map
        1. 1.3.1 Constructions utilisant la relation d’ordre par défaut
          1. Construction d’un conteneur vide
          2. Construction à partir d’un autre conteneur de même type
          3. Construction à partir d’une séquence
        2. 1.3.2 Choix de l’ordre intrinsèque du conteneur
        3. 1.3.3 Pour connaître la relation d’ordre utilisée par un conteneur
        4. 1.3.4 Conséquences du choix de l’ordre d’un conteneur
      4. 1.4 Accès aux éléments
        1. 1.4.1 Accès par l’opérateur [ ]
        2. 1.4.2 Accès par itérateur
        3. 1.4.3 Recherche par la fonction membre find
      5. 1.5 Insertions et suppressions
        1. 1.5.1 Insertions
        2. 1.5.2 Suppressions
      6. 1.6 Gestion mémoire
      7. 1.7 Autres possibilités
      8. 1.8 Exemple
    2. 2 Le conteneur multimap
      1. 2.1 Présentation générale
      2. 2.2 Exemple
    3. 3 Le conteneur set
      1. 3.1 Présentation générale
      2. 3.2 Exemple
      3. 3.3 Le conteneur set et l’ensemble mathématique
    4. 4 Le conteneur multiset
    5. 5 Conteneurs associatifs et algorithmes
  32. Chapitre 27 - Les algorithmes standard
    1. 1 Notions générales
      1. 1.1 Algorithmes et itérateurs
      2. 1.2 Les catégories d’itérateurs
        1. 1.2.1 Itérateur en entrée
        2. 1.2.2 Itérateur en sortie
        3. 1.2.3 Hiérarchie des catégories d’itérateurs
      3. 1.3 Algorithmes et séquences
      4. 1.4 Itérateur d’insertion
      5. 1.5 Itérateur de flot
        1. 1.5.1 Itérateur de flot de sortie
        2. 1.5.2 Itérateur de flot d’entrée
    2. 2 Algorithmes d’initialisation de séquences existantes
      1. 2.1 Copie d’une séquence dans une autre
      2. 2.2 Génération de valeurs par une fonction
    3. 3 Algorithmes de recherche
      1. 3.1 Algorithmes fondés sur une égalité ou un prédicat unaire
      2. 3.2 Algorithmes de recherche de maximum ou de minimum
    4. 4 Algorithmes de transformation d’une séquence
      1. 4.1 Remplacement de valeurs
      2. 4.2 Permutations de valeurs
        1. 4.2.1 Rotation
        2. 4.2.2 Génération de permutations
        3. 4.2.3 Permutations aléatoires
      3. 4.3 Partitions
    5. 5 Algorithmes dits « de suppression »
    6. 6 Algorithmes de tri
    7. 7 Algorithmes de recherche et de fusion sur des séquences ordonnées
      1. 7.1 Algorithmes de recherche binaire
      2. 7.2 Algorithmes de fusion
    8. 8 Algorithmes à caractère numérique
    9. 9 Algorithmes à caractère ensembliste
    10. 10 Algorithmes de manipulation de tas
  33. Chapitre 28 - La classe string
    1. 1 Généralités
    2. 2 Construction
    3. 3 Opérations globales
    4. 4 Concaténation
    5. 5 Recherche dans une chaîne
      1. 5.1 Recherche d’une chaîne ou d’un caractère
      2. 5.2 Recherche d’un caractère présent ou absent d’une suite
    6. 6 Insertions, suppressions et remplacements
      1. 6.1 Insertions
      2. 6.2 Suppressions
      3. 6.3 Remplacements
    7. 7 Les possibilités de formatage en mémoire
      1. 7.1 La classe ostringstream
      2. 7.2 La classe istringstream
        1. 7.2.1 Présentation
        2. 7.2.2 Utilisation pour fiabiliser les lectures au clavier
  34. Chapitre 29 - Les outils numériques
    1. 1 La classe complex
    2. 2 La classe valarray et les classes associées
      1. 2.1 Constructeurs des classes valarray
      2. 2.2 L’opérateur []
      3. 2.3 Affectation et changement de taille
      4. 2.4 Calcul vectoriel
      5. 2.5 Sélection de valeurs par masque
      6. 2.6 Sections de vecteurs
      7. 2.7 Vecteurs d’indices
    3. 3 La classe bitset
  35. Chapitre 30 - Les espaces de noms
    1. 1 Création d’espaces de noms
      1. 1.1 Exemple de création d’un nouvel espace de noms
      2. 1.2 Exemple avec deux espaces de noms
      3. 1.3 Espace de noms et fichier en-tête
      4. 1.4 Instructions figurant dans un espace de noms
      5. 1.5 Création incrémentale d’espaces de noms
    2. 2 Les instructions using
      1. 2.1 La déclaration using pour les symboles
        1. 2.1.1 Présentation générale
        2. 2.1.2 Masquage et ambiguïtés
      2. 2.2 La directive using pour les espaces de noms
    3. 3 Espaces de noms et recherche de fonctions
    4. 4 Imbrication des espaces de noms
    5. 5 Transitivité de la directive using
    6. 6 Les alias
    7. 7 Les espaces anonymes
    8. 8 Espaces de noms et déclaration d’amitié
  36. Chapitre 31 - Le préprocesseur et l’instruction typedef
    1. 1 La directive #include
    2. 2 La directive #define
      1. 2.1 Définition de symboles
      2. 2.2 Définition de macros
    3. 3 La compilation conditionnelle
      1. 3.1 Incorporation liée à l’existence de symboles
      2. 3.2 Incorporation liée à la valeur d’une expression
    4. 4 La définition de synonymes avec typedef
      1. 4.1 Définition d’un synonyme de int
      2. 4.2 Définition d’un synonyme de int *
      3. 4.3 Définition d’un synonyme de int[3]
      4. 4.4 Synonymes et patrons
      5. 4.5 Synonymes et fonctions
  37. Chapitre 32 - Introduction aux Design Patterns
    1. 1 Généralités
      1. 1.1 Historique
      2. 1.2 Patterns et P.O.O.
      3. 1.3 Patterns et C.O.O.
    2. 2 Les patterns de construction
      1. 2.1 Le pattern Factory Method (Fabrique)
        1. 2.1.1 Premier exemple
        2. 2.1.2 Deuxième exemple
        3. 2.1.3 Discussion
      2. 2.2 Le pattern Abstract Factory (Fabrique Abstraite)
        1. 2.2.1 Présentation
        2. 2.2.2 Discussion
    3. 3 Les patterns de structure
      1. 3.1 Le pattern Composite
        1. 3.1.1 Présentation
        2. 3.1.2 Discussion
      2. 3.2 Le pattern Adapter (Adaptateur)
        1. 3.2.1 Adaptateur d’objet
        2. 3.2.2 Adaptateur de classe
        3. 3.2.3 Discussion
      3. 3.3 Le pattern Decorator (Décorateur)
        1. 3.3.1 Présentation
        2. 3.3.2 Classe abstraite de décorateurs
        3. 3.3.3 Discussion
    4. 4 Les patterns comportementaux
      1. 4.1 Le pattern Strategy (Stratégie)
        1. 4.1.1 Présentation
        2. 4.1.2 Discussion
      2. 4.2 Le pattern Template Method (Patron de méthode)
        1. 4.2.1 Présentation
        2. 4.2.2 Discussion
      3. 4.3 Le pattern Observer (Observateur)
        1. 4.3.1 Présentation
        2. 4.3.2 Discussion
  38. Annexes
    1. Annexe A Règles de recherche d’une fonction surdéfinie
      1. 1 Détermination des fonctions candidates
      2. 2 Algorithme de recherche d’une fonction à un seul argument
        1. 2.1 Recherche d’une correspondance exacte
        2. 2.2 Promotions numériques
        3. 2.3 Conversions standard
        4. 2.4 Conversions définies par l’utilisateur
        5. 2.5 Fonctions à arguments variables
        6. 2.6 Exception : cas des champs de bits
      3. 3 Fonctions à plusieurs arguments
      4. 4 Fonctions membres
    2. Annexe B Compléments sur les exceptions
      1. 1 Les problèmes posés par les objets dynamiques
      2. 2 La technique de gestion de ressources par initialisation
      3. 3 Le concept de pointeur intelligent : la classe auto_ptr
    3. Annexe C Les différentes sortes de fonctions en C++
    4. Annexe D Comptage de références
    5. Annexe E Les pointeurs sur des membres
      1. 1 Les pointeurs sur des fonctions membres
      2. 2 Les pointeurs sur des membres données
      3. 3 L’héritage et les pointeurs sur des membres
    6. Annexe F Les algorithmes standard
      1. 1 Algorithmes d’initialisation de séquences existantes
      2. 2 Algorithmes de recherche
      3. 3 Algorithmes de transformation d’une séquence
      4. 4 Algorithmes de suppression
      5. 5 Algorithmes de tri
      6. 6 Algorithmes de recherche et de fusion sur des séquences ordonnées
      7. 7 Algorithmes à caractère numérique
      8. 8 Algorithmes à caractère ensembliste
      9. 9 Algorithmes de manipulation de tas
      10. 10 Algorithmes divers
    7. Annexe G Les principales fonctions de la bibliothèque C standard
      1. 1 Entrées-sorties (cstdio)
        1. 1.1 Gestion des fichiers
        2. 1.2 Écriture formatée
        3. 1.3 Les codes de format utilisables avec ces trois fonctions
        4. 1.4 Lecture formatée
        5. 1.5 Règles communes à ces fonctions
        6. 1.6 Les codes de format utilisés par ces fonctions
        7. 1.7 Entrées-sorties de caractères
        8. 1.8 Entrées-sorties sans formatage
        9. 1.9 Action sur le pointeur de fichier
        10. 1.10 Gestion des erreurs
      2. 2 Tests de caractères et conversions majuscules-minuscules (cctype)
      3. 3 Manipulation de chaînes (cstring)
      4. 4 Fonctions mathématiques (cmath)
      5. 5 Utilitaires (cstdlib)
      6. 6 Macro de mise au point (cassert)
      7. 7 Gestion des erreurs (cerrno)
      8. 8 Branchements non locaux (csetjmp)
    8. Annexe H Les incompatibilités entre C et C++
      1. 1 Prototypes
      2. 2 Fonctions sans arguments
      3. 3 Fonctions sans valeur de retour
      4. 4 Le qualificatif const
      5. 5 Les pointeurs de type void *
      6. 6 Mots-clés
      7. 7 Les constantes de type caractère
      8. 8 Les définitions multiples
      9. 9 L’instruction goto
      10. 10 Les énumérations
      11. 11 Initialisation de tableaux de caractères
      12. 12 Les noms de fonctions
    9. Annexe I C++0x
      1. 1 Nouvelle sémantique de déplacement
      2. 2 Amélioration des initialisations
        1. 2.1 Généralisation de la notation { ..... }
        2. 2.2 Listes d’initialisation
      3. 3 Amélioration des déclarations de type et for généralisé
        1. 3.1 Le mot-clé auto
        2. 3.2 Le mot-clé decltype
        3. 3.3 Instruction for généralisée
        4. 3.4 Déclaration retardée du type d’une valeur de retour
      4. 4 Fonctions dites « lambdas »
      5. 5 Généralisation de la notion d’expression constante
      6. 6 Amélioration des fonctionnalités des objets
        1. 6.1 Amélioration de la construction des objets
          1. 6.1.1 Constructeurs délégués
          2. 6.1.2 Initialisation de membres données
          3. 6.1.3 Héritage du constructeur
        2. 6.2 Amélioration de l’utilisation des fonctions membres
          1. 6.2.1 Fonctions par défaut et fonctions interdites
          2. 6.2.2 Test des noms de membres d’une classe dérivée
          3. 6.2.3 Utilisation de explicit
      7. 7 Patrons
        1. 7.1 Synonymes de patrons
        2. 7.2 Aide à l’instanciation des patrons
        3. 7.3 Patrons à nombre de paramètres variables
      8. 8 Pointeurs intelligents
        1. 8.1 Le type unique_ptr
        2. 8.2 Le type shared_ptr
        3. 8.3 Le type weak_ptr
      9. 9 Les threads
        1. 9.1 Thread depuis une fonction ou un objet fonction
        2. 9.2 Thread depuis une fonction membre
        3. 9.3 Partage de données entre threads
        4. 9.4 Transfert d’informations en retour d’un thread
          1. 9.4.1 Utilisation de la fonction async
          2. 9.4.2 Démarche plus générale
        5. 9.5 Autres possibilités
      10. 10 Améliorations et extensions de la bibliothèque standard
        1. 10.1 Les tuples
        2. 10.2 Les tables de hachage
        3. 10.3 Le type array
        4. 10.4 Les enveloppes de référence
        5. 10.5 Les enveloppes polymorphes de fonctions
        6. 10.6 Autres possibilités de la bibliothèque standard
      11. 11 Divers
        1. 11.1 Les assertations statiques : static_assert
        2. 11.2 Les énumérations fortement typées
        3. 11.3 Nouvelles constantes chaînes
        4. 11.4 Le pointeur nul
        5. 11.5 Autres petites choses
  39. Index
    1. Symboles
    2. A
    3. B
    4. C
    5. D
    6. E
    7. F
    8. G
    9. H
    10. I
    11. K
    12. L
    13. M
    14. N
    15. O
    16. P
    17. Q
    18. R
    19. S
    20. T
    21. U
    22. V
    23. W

Product information

  • Title: Programmer en langage C++
  • Author(s): Claude Delannoy
  • Release date: July 2011
  • Publisher(s): Eyrolles
  • ISBN: 9782212129762