Kann jemand überprüfen, dass das folgende ein BUG ist, und warum erklären? Ich denke, ich weiß es, aber ich bin mir nicht im Klaren über die Details. (Meine eigentliche Problem involviert einen Vektor von Aufzählungen, nicht Ints, aber ich glaube nicht, dass es eine Rolle.) Angenommen, ich den folgenden Code haben:Referenz auf Element des Vektors, der von einer Funktion in C++ zurückgegeben wird
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;
}
Bin ich richtig, dass myIntRef ist sofort ein baumelnden Referenz, weil Der Rückgabewert von f wird nirgendwo auf dem Stapel gespeichert?
Auch ist das folgende eine gültige Lösung, oder ist es immer noch ein Fehler?
Mit anderen Worten, wird das Rückgabeergebnis von f() weggeworfen, bevor das 0. Element kopiert werden kann?
Ich bin nur neugierig, aber gibt es _ever_ irgendeinen Grund, ein 'int const &' anstelle eines 'int' als lokale Variable zu verwenden? –
@JamesKanze: Vielleicht, um die Variable als "const" zu markieren? –