adplus-dvertising

Nous utilisons des cookies pour améliorer votre expérience. En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies.


Politique de confidentialité

Déclarer un paramètre const en C++

Déclarer un paramètre const en C++

Pour comprendre cette notion, prenons une fonction simple qui renvoie le plus petit élément d'un tableau.

Exemple 1
double plusPetite(double Tab[], size_t cpt)
{
      if (!cpt) return NULL;     // tableau vide retourner NULL
      size_t index_min {};
      for (size_t i {1}; i < cpt; ++i){
            if (Tab[index_min] > Tab[i])
                  index_min = i;
      }
      return Tab[index_min];
}
        

La fonction plusPetite() doit seulement accéder aux valeurs des éléments du tableau ; elle n'a pas besoin de les modifier. Il serait bon de s'assurer que le code de la fonction ne modifie pas accidentellement les éléments du tableau. Le fait de spécifier le type de paramètre comme const permet de le faire :

Exemple 2
double plusPetite(const double Tab[], size_t cpt)
{
      if (!cpt) return NULL;     // tableau vide retourner NULL
      size_t index_min {};
      for (size_t i {1}; i < cpt; ++i){
            if (Tab[index_min] > Tab[i])
                  index_min = i;
      }
      return Tab[index_min];
}
        

En ajoutant ce qualificatif const, vous demandez au compilateur de vérifier que les éléments du tableau ne sont pas modifiés dans le corps de la fonction.

Spécifier un paramètre pointeur comme const a deux conséquences : le compilateur vérifie le code dans le corps de la fonction pour s'assurer que vous n'essayez pas de changer la valeur pointée, et il permet à la fonction d'être appelée avec un argument qui pointe vers une constante.

Dans notre dernière définition de plusPetite(), nous n'avons pas déclaré le paramètre cpt de la fonction comme const également. si un paramètre d'un type de base tel que int ou size_t est passé par valeur, il n'a pas besoin d'être déclaré const, du moins pas pour la même raison. le mécanisme de passage par valeur fait une copie de l'argument lorsque la fonction est appelée, donc vous êtes déjà protégé contre la modification de la valeur originale à l'intérieur de la fonction.

Cette directive générale s'applique à toutes les variables, y compris celles déclarées dans la liste des paramètres. pour cette raison, et pour cette raison seulement, vous pouvez toujours envisager de déclarer cpt comme const. cela vous éviterait, par exemple, d'écrire accidentellement ++cpt quelque part dans le corps de la fonction, ce qui pourrait avoir des résultats désastreux. Mais sachez que vous déclareriez alors une copie locale en tant que constante et qu'il n'est en aucun cas nécessaire d'ajouter const pour empêcher la modification de la valeur originale.

Partager ce cours avec tes amis :
Rédigé par ESSADDOUKI Mostafa
ESSADDOUKI
The education of the 21st century opens up opportunities to not merely teach, but to coach, mentor, nurture and inspire.