Niezawarte referencje muszą być inicjowane za pomocą wartości-l. Jeśli mógłbyś zainicjować je za pomocą tymczasowych, to co by zrobiły poniższe?
int& foo = 5;
foo = 6; // ?!
const
referencje mają szczególną właściwość, że przedłużenie ich żywotności sędziego, a ponieważ są one const
, nie ma możliwości, że będziesz próbować zmieniać coś, co nie siedzieć w pamięci. Na przykład:
const int& foo = 5;
foo = 6; // not allowed, because foo is const.
Pamiętaj, że odniesienia w rzeczywistości muszą odnosić się do czegoś, a nie tylko zmiennych tymczasowych. Na przykład:
int foo = 5;
int& bar = foo;
bar = 6;
assert(foo == 6);
Czekaj, więc czy to oznacza, że mogę użyć 'const classA & ref = ReturnsClassAByValue();'? Myślałem, że tymczasowi umrą na następnej linii. – Lucas
Tak, możesz tego użyć. Tymczasowy będzie trwać tak długo, jak długo będzie istniała zmienna referencyjna: http://herbsutter.spaces.live.com/blog/cns!2D4327CC297151BB !378.entry –
Niesamowite, dzięki. Na SO dowiadujesz się czegoś nowego każdego dnia ... – Lucas