Acquérir une parfaite maîtrise du C++ et de la programmation objet Apprendre le C++ succède au grand classique de Claude Delannoy, Programmer en langage C++, qui s'est imposé au fil de ses six éditions successives comme la référence en langue française sur ce langage. Alors que ce dernier avait été conçu pour les programmeurs C souhaitant migrer vers le C++, Apprendre le C++ ne suppose aucune connaissance préalable du langage C et répond parfaitement aux besoins des programmeurs issus d'autres environnements (Visual Basic, Delphi, Java, langages de scripts, de développement Web...) 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. Entièrement fondé sur la norme ANSI/ISO, 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. 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. Table des matières......Page 5 2 Objectifs et structure de l’ouvrage......Page 29 3 L’ouvrage, C, C++ et Java......Page 31 1. Présentation du langage C++......Page 33 1 Programmation structurée et programmation orientée objet......Page 34 2 C++ et la programmation structurée......Page 37 3 C++ et la programmation orientée objet......Page 38 5 C++ et la bibliothèque standard......Page 40 2. Généralités sur le langage C++......Page 43 1 Présentation par l’exemple de quelques instructions du langage C++......Page 44 2 Quelques règles d’écriture......Page 50 3 Création d’un programme en C++......Page 53 1 La notion de type......Page 57 2 Les types entiers......Page 58 3 Les types flottants......Page 61 4 Les types caractères......Page 63 5 Initialisation et constantes......Page 65 6 Le type bool......Page 66 1 Originalité des notions d’opérateur etd’expression en C++......Page 67 2 Les opérateurs arithmétiques en C++......Page 69 3 Les conversions implicites pouvant intervenir dans un calcul d’expression......Page 72 4 Les opérateurs relationnels......Page 77 5 Les opérateurs logiques......Page 79 6 L’opérateur d’affectation ordinaire......Page 81 7 Opérateurs d’incrémentation et de décrémentation......Page 82 8 Les opérateurs d’affectation élargie......Page 84 9 Les conversions forcées par une affectation......Page 85 10 L’opérateur de cast......Page 86 11 L’opérateur conditionnel......Page 87 12 L’opérateur séquentiel......Page 88 14 Les opérateurs de manipulation de bits......Page 90 15 Récapitulatif des priorités de tous lesopérateurs......Page 93 1 Affichage à l’écran......Page 95 2 Lecture au clavier......Page 98 6. Les instructions de contrôle......Page 105 1 Les blocs d’instructions......Page 106 2 L’instruction if......Page 107 3 L’instruction switch......Page 111 4 L’instruction do... while......Page 116 5 L’instruction while......Page 118 6 L’instruction for......Page 120 7 Les instructions de branchement inconditionnel : break, continue et goto......Page 125 7. Les fonctions......Page 129 1 Exemple de définition et d’utilisation d’unefonction......Page 130 2 Quelques règles......Page 132 3 Les fonctions et leurs déclarations......Page 135 4 Transmission des arguments par valeur......Page 136 5 Transmission par référence......Page 138 6 Les variables globales......Page 141 7 Les variables locales......Page 143 8 Initialisation des variables......Page 148 9 Les arguments par défaut......Page 149 10 Surdéfinition de fonctions......Page 151 11 Les arguments variables en nombre......Page 156 12 La conséquence de la compilation séparée......Page 159 13 Compléments sur les références......Page 164 14 La spécification inline......Page 168 8. Les tableaux et les pointeurs......Page 171 1 Les tableaux à un indice......Page 172 2 Les tableaux à plusieurs indices......Page 175 3 Initialisation des tableaux......Page 176 4 Notion de pointeur – Les opérateurs * et &......Page 178 5 Comment simuler une transmission par adresse avec un pointeur......Page 181 6 Un nom de tableau est un pointeur constant......Page 183 7 Les opérations réalisables sur des pointeurs......Page 185 8 La gestion dynamique : les opérateurs new et delete......Page 189 9 Pointeurs et surdéfinition de fonctions......Page 193 10 Les tableaux transmis en argument......Page 194 11 Utilisation de pointeurs sur des fonctions......Page 198 9. Les chaînes de style C......Page 201 1 Représentation des chaînes......Page 202 2 Lecture et écriture de chaînes de style C......Page 204 3 Initialisation de tableaux par des chaînes......Page 205 4 Les arguments transmis à la fonction main......Page 207 5 Généralités sur les fonctions portant sur des chaînes de style C......Page 209 6 Les fonctions de concaténation de chaînes......Page 210 7 Les fonctions de comparaison de chaînes......Page 212 8 Les fonctions de copie de chaînes......Page 213 10 Quelques précautions à prendre avec les chaînes de style C......Page 214 10. Les types structure, union et énumération......Page 217 1 Déclaration d’une structure......Page 218 2 Utilisation d’une structure......Page 219 3 Imbrication de structures......Page 221 4 À propos de la portée du type de structure......Page 224 5 Transmission d’une structure en argument d’une fonction......Page 225 6 Transmission d’une structure en valeur de retour d’une fonction......Page 228 7 Les champs de bits......Page 229 8 Les unions......Page 230 9 Les énumérations......Page 232 11. Classes et objets......Page 235 1 Les structures généralisées......Page 236 2 Notion de classe......Page 240 3 Affectation d’objets......Page 244 4 Notions de constructeur et de destructeur......Page 245 5 Les membres données statiques......Page 253 6 Exploitation d’une classe......Page 257 7 Les classes en général......Page 260 1 Surdéfinition des fonctions membres......Page 263 2 Arguments par défaut......Page 266 3 Les fonctions membres en ligne......Page 267 4 Cas des objets transmis en argument d’une fonction membre......Page 269 5 Mode de transmission des objets en argument......Page 271 6 Lorsqu’une fonction renvoie un objet......Page 274 7 Autoréférence : le mot clé this......Page 275 8 Les fonctions membres statiques......Page 276 9 Les fonctions membres constantes......Page 278 10 Les membres mutables......Page 281 13. Construction, destruction et initialisation des objets......Page 283 1 Les objets automatiques et statiques......Page 284 2 Les objets dynamiques......Page 287 3 Le constructeur de recopie......Page 290 4 Initialisation d’un objet lors de sa déclaration......Page 298 5 Objets membres......Page 300 6 Initialisation de membres dans l’en-tête d’un constructeur......Page 304 7 Les tableaux d’objets......Page 305 8 Les objets temporaires......Page 308 14. Les fonctions amies......Page 311 1 Exemple de fonction indépendante amie d’une classe......Page 312 2 Les différentes situations d’amitié......Page 314 3 Exemple......Page 317 4 Exploitation de classes disposant de fonctions amies......Page 320 15. La surdéfinition d’opérateurs......Page 323 1 Le mécanisme de la surdéfinition d’opérateurs......Page 324 2 La surdéfinition d’opérateurs en général......Page 329 3 Surdéfinition de l’opérateur =......Page 335 4 La forme canonique d’une classe......Page 342 5 Exemple de surdéfinition de l’opérateur [ ]......Page 343 7 Surdéfinition des opérateurs new et delete......Page 346 16. Les conversions de type définies par l’utilisateur......Page 351 1 Les différentes sortes de conversions définies par l’utilisateur......Page 352 2 L’opérateur de cast pour la conversion type classe –> type de base......Page 354 3 Le constructeur pour la conversion type de base -> type classe......Page 361 4 Les conversions d’un type classe en un autre type classe......Page 368 5 Quelques conseils......Page 373 17. Les patrons de fonctions......Page 375 1 Exemple de création et d’utilisation d’un patron de fonctions......Page 376 2 Les paramètres de type d’un patron de fonctions......Page 381 3 Les paramètres expressions d’un patron de fonctions......Page 385 4 Surdéfinition de patrons......Page 386 5 Spécialisation de fonctions de patron......Page 390 6 Algorithme d’instanciation d’une fonction patron......Page 391 18. Les patrons de classes......Page 395 1 Exemple de création et d’utilisation d’un patron de classes......Page 396 2 Les paramètres de type d’un patron de classes......Page 401 3 Les paramètres expressions d’un patron de classes......Page 402 4 Spécialisation d’un patron de classes......Page 405 7 Identité de classes patrons......Page 408 8 Classes patrons et déclarations d’amitié......Page 409 9 Exemple de classe tableau à deux indices......Page 411 19. L’héritage simple......Page 415 1 La notion d’héritage......Page 416 2 Utilisation des membres de la classe de base dans une classe dérivée......Page 418 3 Redéfinition des membres d’une classe dérivée......Page 420 4 Appel des constructeurs et des destructeurs......Page 424 5 Contrôle des accès......Page 429 6 Compatibilité entre classe de base et classe dérivée......Page 435 7 Le constructeur de recopie et l’héritage......Page 441 8 L’opérateur d’affectation et l’héritage......Page 444 9 Héritage et forme canonique d’une classe......Page 447 10 L’héritage et ses limites......Page 449 11 Exemple de classe dérivée......Page 452 12 Patrons de classes et héritage......Page 455 13 L’héritage en pratique......Page 458 20. L’héritage multiple......Page 463 1 Mise en oeuvre de l’héritage multiple......Page 464 2 Pour régler les éventuels conflits : les classes virtuelles......Page 468 3 Appels des constructeurs et des destructeurs : cas des classes virtuelles......Page 469 4 Exemple d’utilisation de l’héritage multiple et de la dérivation virtuelle......Page 472 21. Les fonctions virtuelles et le polymorphisme......Page 475 2 Le mécanisme des fonctions virtuelles......Page 476 3 Autre situation où la ligature dynamique est indispensable......Page 478 4 Les propriétés des fonctions virtuelles......Page 481 5 Les fonctions virtuelles pures pour la création de classes abstraites......Page 487 6 Exemple d’utilisation de fonctions virtuelles : liste hétérogène......Page 489 7 Le mécanisme d’identification dynamique des objets......Page 493 8 Identification de type à l’exécution......Page 495 9 Les cast dynamiques......Page 498 22. Les flots......Page 501 1 Présentation générale de la classe ostream......Page 503 2 Présentation générale de la classe istream......Page 511 3 Statut d’erreur d’un flot......Page 516 4 Surdéfinition de < > pour les types définis par l’utilisateur......Page 521 5 Gestion du formatage......Page 524 6 Connexion d’un flot à un fichier......Page 531 7 Les anciennes possibilités de formatage en mémoire......Page 537 23. La gestion des exceptions......Page 541 1 Premier exemple d’exception......Page 542 2 Second exemple......Page 546 3 Le mécanisme de gestion des exceptions......Page 548 4 Choix du gestionnaire......Page 550 5 Spécification d’interface : la fonction unexpected......Page 555 6 Les exceptions standard......Page 558 1 Notions de conteneur, d’itérateur et d’algorithme......Page 565 2 Les différentes sortes de conteneurs......Page 570 3 Les conteneurs dont les éléments sont des objets......Page 571 4 Efficacité des opérations sur des conteneurs......Page 573 5 Fonctions, prédicats et classes fonctions......Page 574 6 Conteneurs, algorithmes et relation d’ordre......Page 577 7 Les générateurs d’opérateurs......Page 578 25. Les conteneurs séquentiels ......Page 581 1 Fonctionnalités communes aux conteneursvector, list et deque ......Page 582 2 Le conteneur vector......Page 588 3 Le conteneur deque......Page 594 4 Le conteneur list......Page 596 5 Les adaptateurs de conteneur : queue, stack et priority_queue......Page 602 26. Les conteneurs associatifs......Page 607 1 Le conteneur map......Page 608 2 Le conteneur multimap......Page 618 3 Le conteneur set......Page 621 4 Le conteneur multiset......Page 622 5 Conteneurs associatifs et algorithmes......Page 623 1 Notions générales......Page 625 2 Algorithmes d’initialisation de séquences existantes......Page 632 3 Algorithmes de recherche......Page 635 4 Algorithmes de transformation d’une séquence......Page 638 5 Algorithmes dits « de suppression »......Page 642 6 Algorithmes de tri......Page 644 7 Algorithmes de recherche et de fusion sur des séquences ordonnées......Page 645 8 Algorithmes à caractère numérique......Page 647 9 Algorithmes à caractère ensembliste......Page 648 10 Algorithmes de manipulation de tas......Page 650 28. La classe string......Page 653 2 Construction......Page 654 3 Opérations globales......Page 655 5 Recherche dans une chaîne......Page 656 6 Insertions, suppressions et remplacements......Page 658 7 Les possibilités de formatage en mémoire......Page 661 1 La classe complex......Page 667 2 La classe valarray et les classes associées......Page 669 3 La classe bitset......Page 675 1 Création d’espaces de noms......Page 679 2 Les instructions using......Page 684 3 Espaces de noms et recherche de fonctions......Page 689 4 Imbrication des espaces de noms......Page 691 6 Les alias......Page 692 8 Espaces de noms et déclaration d’amitié......Page 693 1 La directive #include......Page 695 2 La directive #define......Page 696 3 La compilation conditionnelle......Page 700 4 La définition de synonymes avec typedef......Page 703 Annexes......Page 707 Annexe A. Règles de recherche d’une fonction surdéfinie......Page 709 Annexe B. Compléments sur les exceptions......Page 715 Annexe C. Les différentes sortes de fonctions en C++......Page 721 Annexe D. Comptage de références......Page 723 Annexe E. Les pointeurs sur des membres......Page 727 Annexe F. Les algorithmes standard......Page 731 Annexe G. Les principales fonctions de la bibliothèque C standard......Page 751 Annexe H. Les incompatibilités entre C et C++......Page 769 Index......Page 775 Table des matières 5 Avant-propos 29 1 Historique de C++ 29 2 Objectifs et structure de l’ouvrage 29 3 L’ouvrage, C, C++ et Java 31 1. Présentation du langage C++ 33 1 Programmation structurée et programmation orientée objet 34 2 C++ et la programmation structurée 37 3 C++ et la programmation orientée objet 38 4 C et C++ 40 5 C++ et la bibliothèque standard 40 2. Généralités sur le langage C++ 43 1 Présentation par l’exemple de quelques instructions du langage C++ 44 2 Quelques règles d’écriture 50 3 Création d’un programme en C++ 53 3. Les types de base de C++ 57 1 La notion de type 57 2 Les types entiers 58 3 Les types flottants 61 4 Les types caractères 63 5 Initialisation et constantes 65 6 Le type bool 66 4. Opérateurs et expressions 67 1 Originalité des notions d’opérateur etd’expression en C++ 67 2 Les opérateurs arithmétiques en C++ 69 3 Les conversions implicites pouvant intervenir dans un calcul d’expression 72 4 Les opérateurs relationnels 77 5 Les opérateurs logiques 79 6 L’opérateur d’affectation ordinaire 81 7 Opérateurs d’incrémentation et de décrémentation 82 8 Les opérateurs d’affectation élargie 84 9 Les conversions forcées par une affectation 85 10 L’opérateur de cast 86 11 L’opérateur conditionnel 87 12 L’opérateur séquentiel 88 13 L’opérateur sizeof 90 14 Les opérateurs de manipulation de bits 90 15 Récapitulatif des priorités de tous lesopérateurs 93 5. Les entrées-sorties conversationnelles de C++ 95 1 Affichage à l’écran 95 2 Lecture au clavier 98 6. Les instructions de contrôle 105 1 Les blocs d’instructions 106 2 L’instruction if 107 3 L’instruction switch 111 4 L’instruction do... while 116 5 L’instruction while 118 6 L’instruction for 120 7 Les instructions de branchement inconditionnel : break, continue et goto 125 7. Les fonctions 129 1 Exemple de définition et d’utilisation d’unefonction 130 2 Quelques règles 132 3 Les fonctions et leurs déclarations 135 4 Transmission des arguments par valeur 136 5 Transmission par référence 138 6 Les variables globales 141 7 Les variables locales 143 8 Initialisation des variables 148 9 Les arguments par défaut 149 10 Surdéfinition de fonctions 151 11 Les arguments variables en nombre 156 12 La conséquence de la compilation séparée 159 13 Compléments sur les références 164 14 La spécification inline 168 8. Les tableaux et les pointeurs 171 1 Les tableaux à un indice 172 2 Les tableaux à plusieurs indices 175 3 Initialisation des tableaux 176 4 Notion de pointeur – Les opérateurs * et & 178 5 Comment simuler une transmission par adresse avec un pointeur 181 6 Un nom de tableau est un pointeur constant 183 7 Les opérations réalisables sur des pointeurs 185 8 La gestion dynamique : les opérateurs new et delete 189 9 Pointeurs et surdéfinition de fonctions 193 10 Les tableaux transmis en argument 194 11 Utilisation de pointeurs sur des fonctions 198 9. Les chaînes de style C 201 1 Représentation des chaînes 202 2 Lecture et écriture de chaînes de style C 204 3 Initialisation de tableaux par des chaînes 205 4 Les arguments transmis à la fonction main 207 5 Généralités sur les fonctions portant sur des chaînes de style C 209 6 Les fonctions de concaténation de chaînes 210 7 Les fonctions de comparaison de chaînes 212 8 Les fonctions de copie de chaînes 213 9 Les fonctions de recherche dans une chaîne 214 10 Quelques précautions à prendre avec les chaînes de style C 214 10. Les types structure, union et énumération 217 1 Déclaration d’une structure 218 2 Utilisation d’une structure 219 3 Imbrication de structures 221 4 À propos de la portée du type de structure 224 5 Transmission d’une structure en argument d’une fonction 225 6 Transmission d’une structure en valeur de retour d’une fonction 228 7 Les champs de bits 229 8 Les unions 230 9 Les énumérations 232 11. Classes et objets 235 1 Les structures généralisées 236 2 Notion de classe 240 3 Affectation d’objets 244 4 Notions de constructeur et de destructeur 245 5 Les membres données statiques 253 6 Exploitation d’une classe 257 7 Les classes en général 260 12. Les propriétés des fonctions membres 263 1 Surdéfinition des fonctions membres 263 2 Arguments par défaut 266 3 Les fonctions membres en ligne 267 4 Cas des objets transmis en argument d’une fonction membre 269 5 Mode de transmission des objets en argument 271 6 Lorsqu’une fonction renvoie un objet 274 7 Autoréférence : le mot clé this 275 8 Les fonctions membres statiques 276 9 Les fonctions membres constantes 278 10 Les membres mutables 281 13. Construction, destruction et initialisation des objets 283 1 Les objets automatiques et statiques 284 2 Les objets dynamiques 287 3 Le constructeur de recopie 290 4 Initialisation d’un objet lors de sa déclaration 298 5 Objets membres 300 6 Initialisation de membres dans l’en-tête d’un constructeur 304 7 Les tableaux d’objets 305 8 Les objets temporaires 308 14. Les fonctions amies 311 1 Exemple de fonction indépendante amie d’une classe 312 2 Les différentes situations d’amitié 314 3 Exemple 317 4 Exploitation de classes disposant de fonctions amies 320 15. La surdéfinition d’opérateurs 323 1 Le mécanisme de la surdéfinition d’opérateurs 324 2 La surdéfinition d’opérateurs en général 329 3 Surdéfinition de l’opérateur = 335 4 La forme canonique d’une classe 342 5 Exemple de surdéfinition de l’opérateur [ ] 343 6 Surdéfinition de l’opérateur () 346 7 Surdéfinition des opérateurs new et delete 346 16. Les conversions de type définies par l’utilisateur 351 1 Les différentes sortes de conversions définies par l’utilisateur 352 2 L’opérateur de cast pour la conversion type classe –> type de base 354 3 Le constructeur pour la conversion type de base -> type classe 361 4 Les conversions d’un type classe en un autre type classe 368 5 Quelques conseils 373 17. Les patrons de fonctions 375 1 Exemple de création et d’utilisation d’un patron de fonctions 376 2 Les paramètres de type d’un patron de fonctions 381 3 Les paramètres expressions d’un patron de fonctions 385 4 Surdéfinition de patrons 386 5 Spécialisation de fonctions de patron 390 6 Algorithme d’instanciation d’une fonction patron 391 18. Les patrons de classes 395 1 Exemple de création et d’utilisation d’un patron de classes 396 2 Les paramètres de type d’un patron de classes 401 3 Les paramètres expressions d’un patron de classes 402 4 Spécialisation d’un patron de classes 405 5 Paramètres par défaut 408 6 Patrons de fonctions membres 408 7 Identité de classes patrons 408 8 Classes patrons et déclarations d’amitié 409 9 Exemple de classe tableau à deux indices 411 19. L’héritage simple 415 1 La notion d’héritage 416 2 Utilisation des membres de la classe de base dans une classe dérivée 418 3 Redéfinition des membres d’une classe dérivée 420 4 Appel des constructeurs et des destructeurs 424 5 Contrôle des accès 429 6 Compatibilité entre classe de base et classe dérivée 435 7 Le constructeur de recopie et l’héritage 441 8 L’opérateur d’affectation et l’héritage 444 9 Héritage et forme canonique d’une classe 447 10 L’héritage et ses limites 449 11 Exemple de classe dérivée 452 12 Patrons de classes et héritage 455 13 L’héritage en pratique 458 20. L’héritage multiple 463 1 Mise en oeuvre de l’héritage multiple 464 2 Pour régler les éventuels conflits : les classes virtuelles 468 3 Appels des constructeurs et des destructeurs : cas des classes virtuelles 469 4 Exemple d’utilisation de l’héritage multiple et de la dérivation virtuelle 472 21. Les fonctions virtuelles et le polymorphisme 475 1 Rappel d’une situation où le typage dynamique est nécessaire 476 2 Le mécanisme des fonctions virtuelles 476 3 Autre situation où la ligature dynamique est indispensable 478 4 Les propriétés des fonctions virtuelles 481 5 Les fonctions virtuelles pures pour la création de classes abstraites 487 6 Exemple d’utilisation de fonctions virtuelles : liste hétérogène 489 7 Le mécanisme d’identification dynamique des objets 493 8 Identification de type à l’exécution 495 9 Les cast dynamiques 498 22. Les flots 501 1 Présentation générale de la classe ostream 503 2 Présentation générale de la classe istream 511 3 Statut d’erreur d’un flot 516 4 Surdéfinition de < > pour les types définis par l’utilisateur 521 5 Gestion du formatage 524 6 Connexion d’un flot à un fichier 531 7 Les anciennes possibilités de formatage en mémoire 537 23. La gestion des exceptions 541 1 Premier exemple d’exception 542 2 Second exemple 546 3 Le mécanisme de gestion des exceptions 548 4 Choix du gestionnaire 550 5 Spécification d’interface : la fonction unexpected 555 6 Les exceptions standard 558 24. Généralités sur la bibliothèque standard 565 1 Notions de conteneur, d’itérateur et d’algorithme 565 2 Les différentes sortes de conteneurs 570 3 Les conteneurs dont les éléments sont des objets 571 4 Efficacité des opérations sur des conteneurs 573 5 Fonctions, prédicats et classes fonctions 574 6 Conteneurs, algorithmes et relation d’ordre 577 7 Les générateurs d’opérateurs 578 25. Les conteneurs séquentiels 581 1 Fonctionnalités communes aux conteneursvector, list et deque 582 2 Le conteneur vector 588 3 Le conteneur deque 594 4 Le conteneur list 596 5 Les adaptateurs de conteneur : queue, stack et priority_queue 602 26. Les conteneurs associatifs 607 1 Le conteneur map 608 2 Le conteneur multimap 618 3 Le conteneur set 621 4 Le conteneur multiset 622 5 Conteneurs associatifs et algorithmes 623 27. Les algorithmes standard 625 1 Notions générales 625 2 Algorithmes d’initialisation de séquences existantes 632 3 Algorithmes de recherche 635 4 Algorithmes de transformation d’une séquence 638 5 Algorithmes dits « de suppression » 642 6 Algorithmes de tri 644 7 Algorithmes de recherche et de fusion sur des séquences ordonnées 645 8 Algorithmes à caractère numérique 647 9 Algorithmes à caractère ensembliste 648 10 Algorithmes de manipulation de tas 650 28. La classe string 653 1 Généralités 654 2 Construction 654 3 Opérations globales 655 4 Concaténation 656 5 Recherche dans une chaîne 656 6 Insertions, suppressions et remplacements 658 7 Les possibilités de formatage en mémoire 661 29. Les outils numériques 667 1 La classe complex 667 2 La classe valarray et les classes associées 669 3 La classe bitset 675 30. Les espaces de noms 679 1 Création d’espaces de noms 679 2 Les instructions using 684 3 Espaces de noms et recherche de fonctions 689 4 Imbrication des espaces de noms 691 5 Transitivité de la directive using 692 6 Les alias 692 7 Les espaces anonymes 693 8 Espaces de noms et déclaration d’amitié 693 31. Le préprocesseur et l’instruction typedef 695 1 La directive #include 695 2 La directive #define 696 3 La compilation conditionnelle 700 4 La définition de synonymes avec typedef 703 Annexes 707 Annexe A. Règles de recherche d’une fonction surdéfinie 709 Annexe B. Compléments sur les exceptions 715 Annexe C. Les différentes sortes de fonctions en C++ 721 Annexe D. Comptage de références 723 Annexe E. Les pointeurs sur des membres 727 Annexe F. Les algorithmes standard 731 Annexe G. Les principales fonctions de la bibliothèque C standard 751 Annexe H. Les incompatibilités entre C et C++ 769 Index 775