du C C++
Historique C++ versus C & Java Types de donnes - dfinition / dclaration Les fonctions Structuration dun programme C++
au C++
Rappel
Objets du logiciel
Objets du langage
Systme dexploitation
Langage
Comment logique ?
Comment physique ?
Conception
Code
au C++
Historique C++
1980 au laboratoire AT&T Bell (Stroustrup) Les classes introduites pr-compilateur de C 1985 : 1re version publique 1995-1997 : rvision standard ANSI
soit pour amliorer les caractristiques de la norme ANSI, soit pour prparer le terrain pour les aspects Objets
au C++
C++ versus C
Principal avantage : compatibilit C/C++
mme syntaxe de base code C "propre" directement compilable en C++ facilit d'intgration de fichiers C++ et C dans un mme programme ( langage hybride)
au C++
Diffrences
gestion mmoire (pas de garbage collecting, etc.) hritage multiple redfinition des oprateurs templates et STL pas de threads dans le langage (mais bibliothques ad hoc) langage compil (et ... plus rapide !)
au C++
Les commentaires
.... /* je suis un super commentaire en C et je tends sur plusieurs lignes printf("Gros commentaire"); */ .... // je suis un super commentaire C++ sur une ligne ....
au C++
Types de donnes
C++ introduit le type bool pour palier cette carence en C. Il s'accompagne des mot-cls true et false.
bool flag=true;
au C++
Mais cette approche n'est pas cohrente avec le formalisme fonctionnel C'est rpar dans le C++ et la mme conversion s'crit dsormais de la manire suivante :
type(expression) (version C++)
noter qu'on peut aussi se scuriser en faisant un mixage des deux approches :
(type)(expression) (version mixte) 8
au C++
au C++
Les constantes
Le mot-cl const remplace la directive du prprocesseur #define constante type mme les pointeurs !
/* quelques constantes classiques */ const int PI=12; const char MOI[]="Etudiant II2"; const int MAX=100; ....
/* constantes classiques en C */ #define PI 12 #define MOI "Etudiant II2" #define MAX 100
int tab[MAX]; /* tableau statique de 100 entiers */ char c; const char *p='t'; /* pointeur sur un caractere constant */ char const *q=&c; /* pointeur constant sur un caractere */ const char const *q=MOI; /* pointeur constant sur un caractere constant */ ....
10
au C++
La rfrence (alias)
On peut dsormais dfinir des variables rfrence, c'est--dire des variables que l'on peut identifier d'autres variables.
11
au C++
version C++
void Swap (int & a, int & b) { int tmp=a; a=b; b=tmp; } .... int i=2, j=4; Swap (i, j); // i vaut 4 et j vaut 2 ....
12
au C++
13
au C++
Remarques : La surcharge est une forme faible de polymorphisme. elle est surtout utilise dans les classes, pour dfinir plusieurs variantes du constructeur la surcharge peut se rvler particulirement intressante lorsqu'on souhaite viter des conversions de types indsirables lors du passage des paramtres.
14
au C++
15
au C++
16
au C++
17
au C++
18
au C++
En C++, il n'est plus ncessaire de spcifier l'extension sur les fichiers d'en-tte standards du C, mais il faut spcifier que c'est un fichier de la librairie C en ajoutant le caractre 'c' devant
#include <cstdio> #include <cmath>
19
Ch. 4 - Du C au C++
20
au C++
21
au C++
spcifier l'espace de nommage par dfaut l'aide du mot-cl using. using namespace A; B i;
22
23
Questions/Rponses