Next: Classes constantes Up: Le langage C++ Previous: Les fonctions en

Les constantes

Le qualificatif const indique que la valeur d'un objet de ce type ne peut pas être modifié ni directement ni par l'intermédiaire d'un pointeur.


  void additionne (const int &a1, const int &a2, int &a3) {
         a3 = a1 + a2 ;
         a1++ ; // erreur a la compilation
à détailler l'importance du passage des paramètres constant : pour des structures complexes, il est plus rapide d'utiliser des références que un passage "classique" de paramètres par valeur (nécessite une "recopie") : l'écriture 'const &' a donc un sens. Dans une déclaration de pointeur, la position de const détermine si c'est le pointeur ou l'objet pointé qui n'est pas modifiable. Si le qualificatif est placé avant le modificateur * c'est l'objet pointé qui sera constant.

const char *p = buffer ; // pointeur sur un char constant
p = nom ; // ok
*p = 'x' ; // erreur
char * const p = buffer ; // pointeur constant sur un char
*p = 'x' ; // ok
p = nom ; //erreur
On ne peut pas affecter l'adresse d'un objet constant à un pointeur sur un type non constant, car une telle affectation pourrait permettre de modifier cet objet par l'intermédiaire du pointeur.

const char espace=' ' ;
const char *p = &espace ; // ok ;
char *q = & espace ;; //erreur

@
vendredi, 7 novembre 1997, 14:51:48 MET