Mã này có hợp lệ không?Biến đổi tạm thời C++ tạm thời
int foo()
{
std::vector<std::string>& v = std::vector<std::string>(5, "X");
// Do something silly...
return 42;
}
Đối với một số lý do tôi nghĩ rằng tạm thời std::vector
đối tượng (ngay từ dấu hiệu phân công) nên được destructed ngay sau đó là xây dựng (do đó vẽ tham chiếu không hợp lệ).
Tuy nhiên, gỡ lỗi chứng minh rằng tôi sai và, tốt, tôi nhận ra rằng tôi không hoàn toàn hiểu tại sao biến tạm thời bị hủy khi hàm trả về.
Tôi đoán tôi có một sự hiểu lầm mạnh mẽ của một cái gì đó cơ bản, vì vậy hãy soi sáng cho tôi :)
Khi bạn nói "gỡ lỗi chứng minh rằng tôi sai", bạn có ý gì? –