Les références non const doivent être initialisées avec des valeurs l. Si vous pouviez les initialiser avec des temporaires, que feraient les suivants?
int& foo = 5;
foo = 6; // ?!
const
références ont la particularité qu'ils prolongent la durée de vie de l'arbitre, et comme ils sont const
, il n'y a aucune possibilité que vous allez essayer de modifier quelque chose qui ne siège pas en mémoire. Par exemple:
const int& foo = 5;
foo = 6; // not allowed, because foo is const.
Rappelez-vous que les références doivent faire référence à quelque chose, pas seulement aux variables temporaires. Par exemple, ce qui suit est valide:
int foo = 5;
int& bar = foo;
bar = 6;
assert(foo == 6);
Attendez, cela signifie que je peux utiliser 'const classA & ref = ReturnsClassAByValue();'? Je pensais que la température allait mourir sur la ligne suivante. – Lucas
Oui, vous pouvez l'utiliser. Le temporaire durera aussi longtemps que la variable de référence: http://herbsutter.spaces.live.com/blog/cns!2D4327CC297151BB!378.entry –
Génial, merci. Sur SO, vous apprenez quelque chose de nouveau chaque jour ... – Lucas