Alors si j'ai tout bien compris du c/c++ ... (ce qu'est pas dit)
Il y a un premier objet de type Retour créé ici
Comme la fonction retourne l'objet par valeur, un deuxième objet est créé et copié à partir du premier.
Ensuite si tu fais
const Retour retour = f();
alors un troisième objet de type Retour est créé puis copié à partir du deuxième. Alors que si tu fais :
const Retour & retour = f();
Il n'y a pas de troisième objet créé ni même copié mais la référence de l'objet retourné par la fonction est stocké dans la référence retour.
Les constructeurs par déplacement à venir (si j'ai tout bien compris encore) pourront réduire le nombre de créations/copies dans les 2 cas de 1.
Flo.
Voilà
Partager