Czy ten kod jest prawidłowy?Czas życia zmiennej tymczasowej C++
int foo()
{
std::vector<std::string>& v = std::vector<std::string>(5, "X");
// Do something silly...
return 42;
}
Z jakiegoś powodu myślałam, że tymczasowy std::vector
obiekt (prawo od znaku przypisania) powinny być zniszczone zaraz po jego budowa (czyniąc odniesienia nieprawidłowy).
Jednak debugowanie dowodzi, że się mylę i, cóż, zdałem sobie sprawę, że nie do końca rozumiem, dlaczego zmienna tymczasowa jest niszczona po powrocie funkcji .
Chyba mam silne niezrozumienie czymś fundamentalnym, więc proszę mnie oświecić :)
Kiedy mówisz "debugowanie dowodzi, że się mylę", co dokładnie masz na myśli? –