C++ (Gouvernelle Vincent) (Z Library)

Author: Gouvernelle Vincent

教育

No Description

📄 File Format: PDF
💾 File Size: 2.5 MB
276
Views
102
Downloads
0.00
Total Donations

📄 Text Preview (First 20 pages)

ℹ️

Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

📄 Page 1
Vincent Gouvernelle C + + LE G U ID E D E S U R V IE V. Gouvernelle LE GUIDE DE SURVIE C++ L’ESSENTIEL DU CODE ET DES COMMANDES Ce Guide de survie est le compagnon indispensable pour programmer en C++ et utiliser effi cacement les bibliothèques standard STL et BOOST, ainsi que QT, wxWidget et SQLite. Cet ouvrage prend en compte la future norme C++0x. CONCIS ET MANIABLE Facile à transporter, facile à utiliser — fi nis les livres encombrants ! PRATIQUE ET FONCTIONNEL Plus de 150 séquences de code pour programmer rapidement et effi cacement en C++. Vincent Gouvernelle est ingénieur en informatique, diplômé de l’ESIL à Marseille, et titulaire d’un DEA en informatique. Il travaille actuellement chez Sescoi R&D, société éditrice de logiciels spécialisés dans la CFAO (conception et fabrication assistée par ordinateur). Niveau : Intermédiaire / Avancé Catégorie : Programmation Confi guration : Multiplate-forme LE GUIDE DE SURVIE C++ L’ESSENTIEL DU CODE ET DES COMMANDES Pearson Education France 47 bis, rue des Vinaigriers 75010 Paris Tél. : 01 72 74 90 00 Fax : 01 42 05 22 17 www.pearson.fr ISBN : 978-2-7440-4011-5 2281-GS C++.indd 1 11/05/09 15:56:39
📄 Page 2
C++ Vincent Gouvernelle
📄 Page 3
Pearson Education France a apporté le plus grand soin à la réalisation de ce livre afin de vous fournir une information complète et fiable. Cependant, Pearson Education France n’assume de responsabilités, ni pour son utilisation, ni pour les contrefaçons de brevets ou atteintes aux droits de tierces personnes qui pourraient résulter de cette utilisation. Les exemples ou les programmes présents dans cet ouvrage sont fournis pour illustrer les descriptions théoriques. Ils ne sont en aucun cas destinés à une utili- sation commerciale ou professionnelle. Pearson Education France ne pourra en aucun cas être tenu pour responsable des préjudices ou dommages de quelque nature que ce soit pouvant résulter de l’utilisation de ces exemples ou programmes. Tous les noms de produits ou marques cités dans ce livre sont des marques déposées par leurs propriétaires respectifs. Publié par Pearson Education France 47 bis, rue des Vinaigriers 75010 PARIS Tél. : 01 72 74 90 00 www.pearson.fr Relecteurs techniques : Philippe Georges et Yves Mettier Collaboration éditoriale : Jean-Philippe Moreux Réalisation PAo : Léa B. Tous droits réservés Aucune représentation ou reproduction, même partielle, autre que celles prévues à l’article L. 122-5 2˚ et 3˚ a) du code de la propriété intellectuelle ne peut être faite sans l’autorisation expresse de Pearson Education France ou, le cas échéant, sans le respect des modalités prévues à l’article L. 122-10 dudit code. ISBN : 978-2-7440-4011-5 Copyright © 2009 Pearson Education France
📄 Page 4
1 Bases héritées du langage C 1 Hello world en C 1 Commentaires 3 Types fondamentaux 4 Types élaborés 6 Structures conditionnelles 9 Structures de boucle 12 Sauts 14 Fonctions 15 Préprocesseur 16 Opérateurs et priorité (C et C++) 18 2 Bases du langage C++ 23 Hello world en C++ 23 Les mots-clés 24 Les constantes 25 Déclarations de variables 27 Les nouveaux types de variables du C++ 29 Conversion de type C 32 Conversion avec static_cast 33 Conversion avec const_cast 34 Conversion avec reinterpret_cast 35 Conversion avec dynamic_cast 36 Surcharge 37 Les espaces de noms 40 Incompatibilités avec le C 42 Lier du code C et C++ 44 Embarquer une fonction 46 Constantes usuelles 46 Table des matières
📄 Page 5
IV C++ 3 Pointeurs et références 47 Créer et initialiser un pointeur 48 Accéder aux données ou fonctions membres 49 Créer et utiliser une référence 50 Déclarer un pointeur sur un tableau 50 Déclarer un pointeur sur une fonction 54 Passer un objet en paramètre par pointeur/référence 57 4 Classes et objets 59 Ajouter des données à des objets 60 Lier des fonctions à des objets 62 Déterminer la visibilité de fonctions ou de données membres 64 Expliciter une instance avec le pointeur this 67 Définir un constructeur/destructeur 68 Empêcher le compilateur de convertir une donnée en une autre 70 Spécifier qu’une fonction membre ne modifie pas l’objet lié 72 Rendre une fonction/donnée membre indépendante de l’objet lié 73 Comprendre le changement de visibilité lors de l’héritage 74 Comprendre les subtilités de l’héritage multiple 78 Empêcher la duplication de données avec l’héritage virtuel 79 Simuler un constructeur virtuel 80 Créer un type abstrait à l’aide du polymorphisme 82 Utiliser l’encapsulation pour sécuriser un objet 85 Obtenir des informations de types dynamiquement 86 Transformer un objet en fonction 88
📄 Page 6
VTable des matières 5 Templates et métaprogrammation 95 Créer un modèle de classe réutilisable 96 Créer une bibliothèque avec des templates 99 Utiliser un type indirect dans un template 101 Changer l’implémentation par défaut fournie par un template 102 Spécialiser partiellement l’implémentation d’un template 104 Spécialiser une fonction membre 105 Exécuter du code à la compilation 106 Créer des méta-opérateurs/métabranchements 108 Avantages et inconvénients de la métaprogrammation 111 6 Gestion de la mémoire 113 Réserver et libérer la mémoire 113 Redéfinir le système d’allocation mémoire 114 Simuler une allocation d’objet à une adresse connue 115 Traiter un échec de réservation mémoire 116 Désactiver le système d’exception lors de l’allocation 119 Optimiser l’allocation avec un pool mémoire 120 7 Exceptions 123 Principe 123 Transmettre une exception 127 Expliciter les exceptions 129 Utiliser ses propres implémentations des fonctions terminate() et unexpected() 131 Utiliser les exceptions pour la gestion des ressources 132 Exceptions de la STL 134
📄 Page 7
VI C++ 8 Itérateurs 137 Les différents concepts 138 Comprendre les iterator_traits 140 Calculer la distance entre deux itérateurs 142 Déplacer un itérateur vers une autre position 144 Comprendre les itérateurs sur flux d’entrée/lecture 145 Comprendre les itérateurs sur flux de sortie/écriture 146 Utiliser les itérateurs de parcours inversé 146 Utiliser les itérateurs d’insertion 148 Utiliser les itérateurs d’insertion en début de conteneur 149 Utiliser les itérateurs d’insertion en fin de conteneur 150 9 Conteneurs standard 151 Créer un conteneur 152 Ajouter et supprimer dans un conteneur séquentiel 153 Parcourir un conteneur 154 Accéder à un élément d’un conteneur 156 Créer et utiliser un tableau 158 Créer et utiliser une liste chaînée 160 Créer et utiliser une file à double entrée 161 Créer et utiliser une pile 163 Créer et utiliser une queue 164 Créer et utiliser une queue de priorité 165 Créer et utiliser un ensemble 166 Créer et utiliser une table associative 167 Créer et utiliser une table de hachage 170 Connaître la complexité des fonctions membres des conteneurs 173
📄 Page 8
VIITable des matières 10 Chaînes de caractères 177 Créer une chaîne 178 Connaître la longueur d’une chaîne 180 Comparer des chaînes 180 Échanger le contenu de deux chaînes 181 Rechercher une sous-chaîne 182 Extraire une sous-chaîne 184 Remplacer une partie d’une chaîne 185 Insérer dans une chaîne 187 Concaténer des chaînes 188 Effacer une partie d’une chaîne 189 Lire des lignes dans un flux 190 11 Fichiers et flux 193 Ouvrir un fichier 194 Tester l’état d’un flux 195 Lire dans un fichier 197 Écrire dans un fichier 200 Se déplacer dans un flux 201 Manipuler des flux 202 Manipuler une chaîne de caractères comme un flux 205 Écrire dans une chaîne de caractère comme dans un flux 206 Lire le contenu d’une chaîne comme avec un flux 206 12 Algorithmes standard 209 Calculer la somme des éléments d’une séquence 214 Calculer les différences entre éléments consécutifs d’une séquence 215 Chercher la première occurrence de deux éléments consécutifs identiques 217
📄 Page 9
VIII C++ Rechercher un élément dans une séquence 218 Copier les éléments d’une séquence dans une autre 219 Copier les éléments d’une séquence dans une autre en commençant par la fin 221 Copier les n premiers éléments d’une séquence dans une autre 222 Compter le nombre d’éléments correspondant à une valeur donnée 223 Compter le nombre d’éléments conformes à un test donné 224 Tester si deux séquences sont identiques 225 Chercher la sous-séquence d’éléments tous égaux à un certain élément 226 Initialiser une séquence 228 Chercher le premier élément tel que… 228 Chercher le premier élément parmi… 229 Appliquer une fonction/foncteur sur tous les éléments d’une séquence 230 Initialiser une séquence à l’aide d’un générateur de valeurs 231 Tester si tous les éléments d’une séquence sont dans une autre 232 Calculer le produit intérieur (produit scalaire généralisé) de deux séquences 234 Initialiser les éléments d’une séquence avec une valeur (en l’incrémentant) 235 Transformer une séquence en tas et l’utiliser 236 Comparer lexicographiquement deux séquences 238 Chercher le premier/dernier endroit où insérer une valeur sans briser l’ordre d’une séquence 241 Fusionner deux séquences triées 243 Récupérer le plus petit/grand élément 245 Récupérer le plus petit/grand élément d’une séquence 246 Trouver le premier endroit où deux séquences diffèrent 247
📄 Page 10
IXTable des matières Générer la prochaine plus petite/grande permutation lexicographique d’une séquence 248 Faire en sorte que le nième élément soit le même que si la séquence était triée 250 Trier les n premiers éléments d’une séquence 251 Copier les n plus petits éléments d’une séquence 252 Calculer une somme partielle généralisée d’une séquence 253 Couper la séquence en deux en fonction d’un prédicat 254 Calculer xi (fonction puissance généralisée) 256 Copier aléatoirement un échantillon d’une séquence 257 Copier aléatoirement un sous-échantillon (de n éléments), en préservant leur ordre d’origine 258 Mélanger les éléments d’une séquence 259 Supprimer certains éléments d’une séquence 260 Copier une séquence en omettant certains éléments 262 Remplacer certains éléments d’une séquence 263 Inverser l’ordre de la séquence 264 Effectuer une rotation des éléments de la séquence 264 Chercher une sous-séquence 265 Construire la différence de deux séquences triées 268 Construire l’intersection de deux séquences triées 270 Construire la différence symétrique des deux séquences triées 272 Construire l’union de deux séquences triées 273 Trier une séquence 274 Échanger le contenu de deux variables, itérateurs ou séquences 275 Transformer une (ou deux) séquences en une autre 276 Supprimer les doublons d’une séquence (dans ou lors d’une copie) 278 Copier à l’aide du constructeur par copie 281 Initialiser à l’aide du constructeur par copie 282
📄 Page 11
X C++ 13 BOOST 285 Mettre en forme des arguments selon une chaîne de formatage 286 Convertir une donnée en chaîne de caractères 289 Construire et utiliser une expression régulière 291 Éviter les pertes mémoire grâce aux pointeurs intelligents 295 Créer des unions de types sécurisées 300 Parcourir un conteneur avec BOOST_FOREACH 304 Générer des messages d’erreur pendant le processus de compilation 306 14 Programmation multithread avec QT 311 Créer un thread 311 Partager des ressources 312 Se protéger contre l’accès simultané à une ressource avec les mutex 313 Contrôler le nombre d’accès simultanés à une ressource avec les sémaphores 316 Prévenir le compilateur de l’utilisation d’une variable dans plusieurs threads 318 15 Base de données 319 Savoir quand utiliser SQLite 321 Créer et utiliser une base avec l’interpréteur SQLite 328 Créer/ouvrir une base (SQLite) 331 Lancer une requête avec SQLite 335 Fermer une base (SQLite) 337 Créer une table (requête SQL) 338 Accéder aux données d’une table (requête SQL) 347 Définir un environnement ODBC (wxWidgets) 349 Se connecter à une base (wxWidgets) 350 Créer la définition de la table et l’ouvrir (wxWidgets) 352
📄 Page 12
XITable des matières Utiliser la table (wxWidgets) 355 Fermer la table (wxWidgets) 356 Fermer la connexion à la base (wxWidgets) 357 Libérer l’environnement ODBC (wxWidgets) 358 16 XML 359 Charger un fichier XML 360 Manipuler des données XML 363 Annexes A Bibliothèques et compilateurs 369 Compilateurs 369 IDE et RAD 370 Bibliothèques 372 Bibliothèques à dominante graphique 379 Utilitaires 382 B Les ajouts de la future norme C++ (C++0x) 385 Variable locale à un thread 386 Unicode et chaînes littérales 386 Délégation de construction 388 Héritage des constructeurs 389 Constructeur et destructeur par défaut 392 union étendue 394 Opérateurs de conversion explicites 395 Type énumération fort 395 Listes d’initialisation 396 Initialisation uniformisée 397 Type automatique 399 Boucle for ensembliste 400 Syntaxe de fonction unifiée 401
📄 Page 13
XII C++ Concepts 402 Autorisation de sizeof sur des membres 406 Amélioration de la syntaxe pour l’utilisation des templates 407 Template externe 407 Expressions constantes généralisées 408 Les variadic templates 410 Pointeur nul 411 Tuple 412 Lambda fonctions et lambda expressions 414 C Conventions d’appel x86 417 Convention d’appel cdecl 419 Convention d’appel pascal 421 Convention d’appel stdcall 422 Convention d’appel fastcall 422 Convention d’appel thiscall 423 Index 425
📄 Page 14
XIIITable des matières À propos de l’auteur Vincent Gouvernelle est ingénieur en informatique, diplômé de l’ESIL à Marseille, et titulaire d’un DEA en informatique. Après une période consacrée à l’enseigne- ment et à la recherche, au cours de laquelle il a participé à des travaux sur la paramétrisation de surfaces au sein du CNRS et du BRGM, il s’est tourné vers le monde de l’industrie. Chez Gemplus, il a travaillé sur la personnalisa- tion des cartes à puce et l’écriture de drivers optimisés pour le chiffrement de données. Puis au sein de Coretech International, maintenant filiale de Think3, il revient à sa première spécialité, la CAO, dans le domaine de la conver- sion et la correction de modèles. Il travaille aujourd’hui chez Sescoi R&D, société éditrice de logiciels de CFAO.
📄 Page 15
(This page has no text content)
📄 Page 16
Introduction Il y a longtemps que je souhaitais réunir toutes les infor- mations relatives aux algorithmes et à l’utilisation de la bibliothèque standard (STL) et de BOOST. Je me suis dit qu’il était temps de passer à l’acte lorsque l’occasion m’a été donnée d’écrire ce livre. L’objectif de la collection Guide de survie auquel ce dernier appartient est de four- nir au monde informatique l’équivalent des aide-mémoire linguistiques que l’on emmène avec soi à l’étranger. Ainsi, cet ouvrage n’est pas un simple dictionnaire de fonctions ou de mots-clés : un effort particulier a été fait pour mettre en situation chacun d’eux afin de vous permettre d’en exploiter tout le potentiel dans le contexte qui est le vôtre. Les séquences de codes (relatives aux bibliothèques stan- dard et à BOOST) fournies dans ce livre fonctionnent avec les compilateurs mentionnés dans le tableau ci-des- sous. La liste n’est bien entendu pas exhaustive. Pour ce qui est des parties employant wxWidget et QT, il suffit de recourir à une plate-forme disposant de ces bibliothèques. Je voudrais remercier les personnes sans qui cet ouvrage ne serait pas. Pour tout le temps que je n’ai pas pu leur consacrer pendant la rédaction de ces pages, je remercie mon épouse Audrey et mes trois enfants. Merci également à Patricia Moncorgé de la confiance qu’elle m’a accordée pour la réalisation de ce projet, aux relecteurs techni- ques Philippe Georges et Yves Mettier et au correcteur Jean-Philippe Moreux. Merci enfin à Yves Bailly qui fut le premier à m’encourager dans cette aventure.
📄 Page 17
XVI C++ J’espère que cet ouvrage comblera vos attentes de program- meur, que vous soyez débutant ou chevronné. Compilateurs Plate-forme Compilateurs Windows Visual C++ (7.1 avec SP1 aka 2003, 8.0 aka 2005, 9.0 aka 2008), Intel C++ (10.1), Comeau C++ (4.3), MingGW, Cygwin Linux GCC (3.4, 4.0, 4.1, 4.2, 4.3), Intel C++ (8.1, 9.0, 9.1, 10.0), QLogic (3.1), Sun Compiler (5.9, 5.10 avec stdcxx) Mac OS X GCC 4 (pour PowerPC ou Intel) HP-UX GCC 4.2, HP C/aC++, HP aCC IBM AIX IBM XL C/C++ (10.1) True64 Compaq C++ (7.1) Sun Solaris Sun C++ (5.7, 5.8, 5.9), GCC (3.4)
📄 Page 18
1 Bases héritées du langage C Le langage C++ est une évolution du langage C. De ce fait, une partie de la syntaxe est commune à ces deux lan- gages. Ce chapitre résume rapidement ces points com- muns quelque peu améliorés au passage. Pour plus de renseignements sur le langage C, vous pouvez vous référer au Guide de survie – Langage C d’Yves Mettier (Pearson, 2007). Hello world en C #include <stdio.h> int main(int argc, char* argv[]) { printf(“Hello world!”); return 0; } La première ligne est une inclusion d’un fichier d’en-tête de la bibliothèque C standard. Cela permet d’utiliser la fonction printf() pour écrire le message « Hello world! »
📄 Page 19
CHAPITRE 1 Bases héritées du langage C sur la console. La deuxième ligne correspond au point d’entrée standard de tout programme C (et C++), c’est-à- dire que cette fonction est automatiquement appelée lors du lancement du programme. Notez toutefois que le nommage et les paramètres de ce point d’entrée peuvent varier suivant les systèmes. Par exemple, Windows a ajouté le point d’entrée suivant : int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nShowCmd); Enfin, le return 0 ; indique que le programme s’est déroulé sans erreur. Compiler avec gcc Pour compiler cet exemple, vous pouvez utiliser gcc en ligne de commande. Par exemple avec mingw ou cygwin sous Windows, ou toute autre version de gcc (disponibles sous GNU/Linux, Unix, Mac OS X, etc.) : gcc helloworld.c –o helloworld.exe L’option –c permet de compiler un fichier source et de créer un fichier objet, réutilisable par la suite. L’option –I permet d’ajouter des chemins de recher- che supplémentaires pour les fichiers d’en-tête. L’option –lbibliotheque permet de linker avec la bibliotheque donnée. L’option –L permet d’ajouter des chemins de recher- che supplémentaires pour les bibliothèques.
📄 Page 20
Pour plus de simplicité, il existe aussi des environne- ments intégrés pour le compilateur GNU. Je vous invite à jeter un œil sur l’excellent DevCPP (www. bloodshed.net/devcpp.html disponible pour Win- dows), CodeBlocks (www.codeblocks.org, disponible pour Windows, Linux et Mac OS X) ou encore Anjuta (anjuta.sourceforge.net disponible pour GNU/Linux). Compiler avec Microsoft Visual C++ Ouvrez l’environnement de développement et lais- sez-vous guider par les assistants de création de projet. Pour cet exemple, choisissez une application en mode console. Commentaires /* commentaire C possible sur plusieurs lignes */ // commentaire C++ sur une seule ligne Les commentaires C commencent avec une barre oblique et un astérisque /* et finissent par un astérisque et une barre oblique */. Leur contenu peut s’étaler sur plusieurs lignes et commencer ou finir en milieu de ligne. Le commentaire C++ commence dès l’apparition de deux barres obliques // et finit automatiquement à la fin de la ligne. Commentaires
The above is a preview of the first 20 pages. Register to read the complete e-book.

💝 Support Author

0.00
Total Amount (¥)
0
Donation Count

Login to support the author

Login Now
Back to List