Attention à ne pas oublier le
const si le paramètre n'est pas modifié dans la fonction : cela permet en effet de passer ce
que l'on appelle des temporaires non nommés.
Code c++ :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include <string>
#include <vector>
void FonctionIncorrecte(std::string& s)
{
// ...
}
void FonctionCorrecte(const std::string& s)
{
// ...
}
std::string s1 = "salut";
std::string s2 = "hello";
FonctionIncorrecte(s1); // Ok
FonctionCorrecte(s1); // Ok
FonctionIncorrecte(s1 + s2); // Erreur : s1 + s2 est un temporaire
FonctionCorrecte(s1 + s2); // Ok
FonctionIncorrecte("bonjour"); // Erreur : "bonjour" est un temporaire
FonctionCorrecte("bonjour"); // Ok |
Cette remarque vaut également pour les pointeurs :
Code c++ :
1 2 3 4 5 6 7 8 9 10 11 12
| void FonctionIncorrecte(char* s)
{
// ...
}
void FonctionCorrecte(const char* s)
{
// ...
}
FonctionIncorrecte("bonjour"); // Erreur : "bonjour" est un temporaire
FonctionCorrecte("bonjour"); // Ok |
Partager