Vous êtes sur la page 1sur 457

www.biblio-scientifique.

net

LE GUIDE DE SUR VIE


Vincent Gouvernelle LE GUIDE DE SURVIE
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 efficacement les
bibliothèques standard STL et BOOST, ainsi que QT,
wxWidget et SQLite. Cet ouvrage prend en compte la
future norme C++0x.
C++
C++
CONCIS ET MANIABLE
Facile à transporter, facile à utiliser — finis les livres L’ESSENTIEL DU CODE ET DES COMMANDES
encombrants !

PRATIQUE ET FONCTIONNEL
Plus de 150 séquences de code pour programmer
rapidement et efficacement 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
Configuration : Multiplate-forme

Pearson Education France ISBN : 978-2-7440-4011-5 V. Gouvernelle


47 bis, rue des Vinaigriers
75010 Paris
Tél. : 01 72 74 90 00
Fax : 01 42 05 22 17
www.pearson.fr

2281-GS C++.indd 1 11/05/09 15:56:39


www.biblio-scientifique.net

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 descrip­tions 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 ­pro­prié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.

ISBN : 978-2-7440-4011-5

Copyright © 2009
Pearson Education France
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.
www.biblio-scientifique.net

Table des matières


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
www.biblio-scientifique.net
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

Vous aimerez peut-être aussi