Il me semble que si j'indique:
bool verifyString (string theString) {...}
La fonction fait une copie de la variable qui peut être utilisée et modifiée localement.
Par contre, si j'indique
bool verifyString (const string theString) {...}
alors même localement je ne peux pas modifier la variable!
Je ne vois pas en quoi mon code devient plus sécuritaire
étant donné que la variable passée en paramètre ne changera pas de toute façon!
ex: verifyString(uneAutreChaine); // uneAutreChaine ne vas pas pouvoir être modifiée dans la fonction.
D'autre part si j'écris
bool verifyString (string& theString) {...}
alors dans la fonction j'obtiens une référence à la variable
et cette fois je peux modifier la variable (ex: uneAutreChaine) dans la fonction
ce que je veux éviter.
C'est pourquoi dans ce cas je devrais faire comme l'indique Bousk
bool verifyString (const string& theString) {...}
Ainsi je ne fais pas de copie inutile d'une variable et cette variable ne peut être
modifiée dans la fonction.
Ai-je bien compris? Si oui, alors si je fais une copie locale comme dans mon premier exemple,
je ne vois toujours pas pourquoi je dois utiliser un iterator constant!
Partager