Généralités
Puisque ça
n'est pas foncièrement utile, je vous fais grâce de l'historique
du langage C++. Vous devez juste savoir, éventuellement, qu'il a
été conçu par Bjarne Stroustrup, ce qui aide
pour trouver l'excellente bible du C++, écrite par lui-même.
Pour commencer cette présentation,
parlons de quelques généralités, et d'abord du pourquoi
du C++.
C'est avant tout une nécessité
de répondre à des besoins générés par
de gros projets. Ils nécessitent une façon de travailler
plus rigoureuse, pour un code plus structuré, extensible, réutilisable
et enfin si possible, portable. Ceci est assez limité lorsqu'on
emploie un langage simplement structuré tel que C ou Turbo
Pascal.
Programmation
Orientée Objet
La Programmation
Orientée Objet (P.O.O.) est une solution. Elle permet d'introduire
le concept d'objet justement, qui consiste en un ensemble de données
et de procédures qui agissent sur ces données.
Lorsque l'objet est parfaitement
bien écrit, il introduit la notion fondamentale d'Encapsulation
des données. Ceci signifie qu'il n'est plus possible pour l'utilisateur
de l'objet, d'accéder directement aux données : il doit passer
par des méthodes spécifiques écrites par le concepteur
de l'objet, et qui servent d'interface entre l'objet et ses utilisateurs.
L'intérêt de cette technique est évident. L'utilisateur
ne peut pas intervenir directement sur l'objet, ce qui diminue les risques
d'erreur, ce dernier devenant une "boîte noire".
Une autre notion importante
en P.O.O. est l'héritage. Elle permet la définition
d'une nouvelle classe à partir d'une classe existante. Il est alors
possible de lui adjoindre de nouvelles données, de nouvelles fonctions
membres (procédures) pour la spécialiser.
Différences
entre C et C++
Nous allons parler
ici d'un certain nombre de différences existant entre le C et le
C++. Nous pourrions d'ailleurs plutôt utiliser le terme d'incompatibilités.
Les fonctions
Les fonctions en
C peuvent être définies suivant deux modèles :
int CalculeSomme
( a, b )
int a;
int b;
{
... /* Fonction
*/
} |
int CalculeSomme
( int a, int
b )
{
... /* Fonction
*/
} |
Il faut simplement savoir que
le C++ n'accepte que la seconde méthode.
Const
Le C++ a quelque
peu modifié l'utilisation "C" de ce qualificatif. Pour rappel,
"const"
est utilisé pour définir une variable constante. C'est une
bonne alternative à un define.
La portée en C++
est désormais plus locale. En C, un const
permettait pour une variable globale d'être "visible" partout. C++
limite quant à lui la portée d'une telle variable, au fichier
source contenant la déclaration.
Compatibilité de pointeurs
En C ANSI, un "void*"
est compatible avec tout autre type de pointeurs, et inversement.
Par exemple, ceci est légal
en C :
/* C */
void * pQqch; /*
Pointeur générique */
int * pEntier; /*
Pointeur sur un entier */
pEntier = pQqch;
pQqch = pEntier; |
Ces affectations font intervenir
des conversions implicites. En C++, seule la conversion int*->void*
est implicite. L'autre reste possible, mais nécessite un "cast"
:
// C++
void * pQqch;
// Pointeur générique
int * pEntier;
// Pointeur sur un entier
pEntier = (int*)pQqch; //
"cast" en entier |
|
Cours précédent
|
Cours suivant

|
|