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++ :
	
	| 12
 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++ :
	
	| 12
 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