Czy ktoś może sprawdzić, czy jest to BŁĄD i wyjaśnić, dlaczego? Myślę, że wiem, ale nie jestem pewien szczegółów. (Mój rzeczywisty problem zaangażowanych wektor teksty stałe, a nie wskazówki, ale nie sądzę, powinna ona znaczenia.) Załóżmy, że mam następujący kod:Odniesienie do elementu wektora zwrócony przez funkcję w C++
std::vector<int> f (void) {
std::vector<int> v;
v.push_back(5);
return v;
}
void g (void) {
const int &myIntRef = f()[0];
std::cout << myIntRef << std::endl;
}
mam rację, że myIntRef jest natychmiast wiszącym odniesienia, ponieważ zwracana wartość f jest zapisana nigdzie na stosie?
Czy poprawka jest poprawna, czy nadal jest błędem?
const int myIntCopy = f()[0]; // copy, not a reference
Innymi słowy, czy wynik powrotu f() wyrzucony przed skopiowaniem 0 elementu?
Jestem po prostu ciekawy, ale czy istnieje jakikolwiek powód, aby użyć 'int const &' zamiast 'int' jako zmiennej lokalnej? –
@JamesKanze: Może oznaczyć zmienną jako "const"? –