Powiel możliwe:
Does a const reference prolong the life of a temporary?Wracając tymczasowy obiekt i wiązanie z const odniesienia
Mój kompilator nie narzekają przypisując tymczasowy do const odniesienia:
string foo() {
return string("123");
};
int main() {
const string& val = foo();
printf("%s\n", val.c_str());
return 0;
}
Dlaczego ? Myślałem, że ciąg zwrócony z foo
jest tymczasowy, a val może wskazywać na obiekt, którego czas życia dobiegł końca. Czy standard C++ na to pozwala i przedłuża żywotność zwracanego obiektu?
Tak, czas życia tymczasowego jest przedłużony, o ile jest to ** const ** reference. – chris
To nie jest dokładnie duplikat 2784262, który (powinien) potraktować przypadek, w którym odniesienie jest członkiem klasy. Zachowanie jest inne. – aberaud
@aberaud nie tylko to nie jest duplikat, jest o wiele lepsze pytanie Cieszę się, że znalazłem. – dashesy