Réponse acceptée !
Mon exemple t'expliquais la passage par référence et non la constitude.
Quand on veut passer par référence, on prend le risque de voir sa variable être modifié. Donc on passe par copie pour éviter cela.
Parfois (et même souvent), passer par copie peut être très couteux en performance.
Donc on se retrouve avec le dilemme: performance/sécurité.
Le "const truc&" permet d'avoir le beurre et l'argent du beurre. Non seulement on va pouvoir passer par référence (et donc éviter une couteuse copie) mais en plus, grâce au "const", on est sur que la variable ne sera pas modifiée par l'appel à la fonction.
C'est extrêmement utilisé en C++.
Ex:
Code C/C++ :
// copie inutile de str
void affiche(std::string str)
{
std::cout << str << std::endl;
}
// const est ici inutile, puisque str est passé de tout façon par copie.
// + copie inutile de str
void affiche(const std::string str)
{
std::cout << str << std::endl;
}
// Ici, pas de copie. Mais on prend le risque de voir str être modifié.
void affiche(std::string& str)
{
str = "toto"; // str peut être modifié. Or pour une fonction d'affichage, ça devrait être impossible
std::cout << str << std::endl;
}
// Version parfaite :). Pas de copie inutile, pas de risque de modification de str
void affiche(const std::string& str)
{
std::cout << str << std::endl;
}
________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question