Avant-propos
Ce livre est un cours de C et de C++. Il s'adresse aux personnes
qui ont déjà quelques notions de programmation dans un langage quelconque. Les connaissances requises
ne sont pas très élevées cependant : il n'est pas nécessaire d'avoir fait de grands programmes
pour lire ce document. Il suffit d'avoir vu ce qu'est un programme et compris les grands principes
de la programmation.
Ce livre est structuré en deux grandes parties, traitant chacune un des aspects
du C++. La première partie, contenant les chapitres 1 à 12, traite du langage C++ lui-même, de sa syntaxe
et de ses principales fonctionnalités. La deuxième partie quant à elle se concentre sur la bibliothèque
standard C++, qui fournit un ensemble de fonctionnalités cohérentes et réutilisables par tous
les programmeurs. La bibliothèque standard C++ a également l'avantage d'utiliser les constructions
les plus avancées du langage, et illustre donc parfaitement les notions qui auront été abordées
dans la première partie. La description de la bibliothèque standard s'étend du chapitre 13 au chapitre 18.
Si la bibliothèque standard C++ est décrite en détail, il n'en va pas de même pour
les fonctions de la bibliothèque C. Vous ne trouverez donc pas dans ce livre la description des fonctions
classiques du C, ni celle des fonctions les plus courantes de la norme POSIX. En effet, bien que présentes
sur quasiment tous les systèmes d'exploitation, ces fonctions sont spécifiques à la norme POSIX et
n'appartiennent pas au langage en soi. Seules les fonctions incontournables de la bibliothèque C seront donc
présentées ici. Si vous désirez plus de renseignements, reportez-vous aux spécifications des appels systèmes
POSIX de l'OpenGroup, ou à la documentation des environnements
de développement et à l'aide des kits de développement des systèmes d'exploitation (SDK).
Ce livre a pour but de présenter le langage C++ tel qu'il est décrit par
la norme ISO 14882 du langage C++. Cependant, bien que cette norme ait été publiée en 1999, le texte
officiel n'est pas librement disponible. Comme je ne veux pas cautionner le fait qu'un texte de norme
international ne soit pas accessible à tous, je me suis rabattu sur le document du projet
de normalisation du langage, datant du 2 décembre 1996 et intitulé
« Working Paper for
Draft Proposed International Standard for Information Systems -- Programming Language C++ ».
Notez que les compilateurs qui respectent cette norme se comptent encore sur
les doigts d'une main, et que les informations et exemples donnés ici peuvent ne pas s'avérer exacts
avec certains produits. En particulier, certains exemples ne compileront pas avec les compilateurs
les plus mauvais. Notez également que certaines constructions du langage n'ont pas la même signification
avec tous les compilateurs, parce qu'elles ont été implémentées avant que la norme ne les spécifie
complètement. Ces différences peuvent conduire à du code non portable, et ont été signalées à chaque
fois dans une note. Le fait que les exemples de ce livre ne fonctionnent pas avec
de tels compilateurs ne peut donc pas être considéré comme une erreur, mais plutôt comme
une non-conformité des outils utilisés, qui sera sans doute levée dans les versions ultérieures
de ces produits.
Après avoir tenté de faire une présentation rigoureuse du sujet, j'ai décidé d'arranger
le plan de ce livre dans un ordre plus pédagogique. Il est à mon avis impossible de parler d'un sujet
un tant soit peu vaste dans un ordre purement mathématique, c'est-à-dire un ordre où les notions sont
introduites une à une, à partir des notions déjà connues (chaque fonction, opérateur, etc.
n'apparaît pas avant sa définition). Un tel plan nécessiterait de couper le texte en morceaux
qui ne sont plus thématiques. J'ai donc pris la décision de présenter les choses par ordre
logique, et non par ordre de nécessité syntaxique.
Les conséquences de ce choix sont les suivantes :
il faut admettre certaines choses, quitte à les comprendre
plus tard ;
il faut lire deux fois ce livre. Lors de la première lecture,
on voit l'essentiel, et lors de la deuxième lecture, on comprend les détails (de toutes manières,
je félicite celui qui comprend toutes les subtilités du C++ du premier coup).
Enfin, ce livre est un document vivant. Il est librement téléchargeable sur
mon site web, où la dernière version
peut être récupérée. Toute remarque est donc la bienvenue. Je tâcherai de corriger les erreurs que
l'on me signalera dans la mesure du possible, et d'apporter les modifications nécessaires si un point
est obscur. Si vous prenez le temps de m'envoyer les remarques et les erreurs que vous avez pu détecter,
je vous saurais gré de vérifier au préalable qu'elles sont toujours d'actualité dans la dernière version
de ce document. À cette fin, un historique des révisions a été inclus en première page pour permettre
l'identification des différentes éditions de ce document.