Bonjour,

J'ai une petite question sur les références.

Prenons un objet A, et sa méthode toString() qui va créer une string représentant A. Je pars du principe que la représentation stringuesque de A n'est pas sauvegardée dans la classe, donc calculée à chaque fois.

Question performance (bon ok pour une string ça joue pas énormément, mais c'est pour le principe) le mieux c'est de faire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
void toString(string& myString)
{
 // traitement sur myString blabla
}
 
//dans l'appelant
string s;
A.toString(s) ;
?
Car si j'ai bien compris (arf) si je fais

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
string toString()
{
   string s ;
 // traitement sur myString blabla
   return s ;
}
 
//dans l'appelant
string s = A.toString(s) ;
dans ce cas là j'ai une copie lors de l'affecation non ?
Et si je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
const string& toString()
{
   string s ;
 // traitement sur myString blabla
   return s ;
}
 
//dans l'appelant
string s = A.toString(s) ;
dans ce cas je retourne une référence vers un object qui n'existe plus non ?

Et si je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
string toString()
{
   string s ;
 // traitement sur myString blabla
   return s ;
}
 
//dans l'appelant
const string& s = A.toString(s) ;
Pareil que précédemment, j'ai une référence vers un object qui n'existe pas non ?