Salut,
Bon ça fait longtemps que je me tâte sur le sujet mais faut que j'en parle chez dev.com
Qd on m'a appris le C, j'ai pris la bonne habitude de mettre les chaines en parametres de type "entrée" aux fonctions comme ceci :
void func (const char * str);
Je le fais aussi quand je passe un pointeur sur un objet auquel je veux rien modifier, ou bien un pointeur sur le premier element d'un tableau.
Si l'utilité du const est ici evidente et souligne clairement le passage de parametre en entrée, on m'a appris aussi a mettre des const aux parametres non pointeur
void func (const int a, const int b);
L'utilité, outre le fait de rajouter du sens au parametre (j'avais assimilé que const = parametre d'entrée), je l'ai comprise assez tard : ça sert en fait à eviter de modifier ces parametres par megarde
1 2 3 4 5 6
|
void func (const int a, const int b) {
if (a = 4)
return;
/*...*/
} |
Ici, j'aurais voulu ecrire (a == 4), et grace au const, le compilateur me dit que je peux pas affecter a.
C'est bien, mais j'ai pas l'impression que cette technique soit utilisée par les professionnels du C.
Je pense à toutes les fonctions de la libraire standard du C, je n'ai pas remarqué de fonction ayant un parametre non pointé marqué d'un const
De plus, si on le fait pour les parametres non pointeurs, pourquoi ne pas le faire aussi pour le pointeur des parametres pointés? Emdel a deja utilisé cette syntaxe
void func (const char const * in_str, char const * out_buff);
En un mot : pour ou contre cette pratique?
Partager