Dlaczego nie niekonstytucyjne odniesienie do obiektów tymczasowych? [duplikować]

C ++ pozwala na przypisywanie obiektów tymczasowych tylko do stałych referencji. Nie pozwoli na przypisanie tymczasowych obiektów do odniesienia.

Na przykład:

String& a = String("test");         // Error
const String& a = String("test");   // Ok

Wszędzie, gdzie szukam tego wyniku, widzę tylko następujące odpowiedzi

Modyfikacja obiektów tymczasowych spowodowałaby problemy niezidentyfikowaneModyfikowanie tymczasowych obiektów jest niebezpieczneW pewnym momencie zapomnisz, że jest to zmienna tymczasowa

Mówi się, że tymczasowe obiekty znikają po oświadczeniu. Więc nie powinieneś go modyfikować.

Jeśli C ++ jest tak chętny do blokowania modyfikacji obiektów tymczasowych, powinien zablokować odczyt obiektów tymczasowych? Jeśli tymczasowy obiekt zniknie, nie ma sensu odczytywać zawartości z tego miejsca? Możliwe przypadki, w których może wystąpić prawo, mogą również obejmować czytanie.

Dlaczego więc blokował sam zapis i zezwalał na czytanie?

Proszę o wyjaśnienie kodu w języku c ++.

Proszę, nie odchylaj pytania, wskazując kilka alternatyw. Proszę dać mi solidną odpowiedź z kodem, dlaczego const int i jest dozwolone, a int i nie jest dozwolone dla obiektów tymczasowych.

Jeden mówi, że && jest tam. Moje pytanie jest inne .. Inne twierdzenie, zmiana nie będzie odzwierciedlać. Zmiana nie będzie odzwierciedlać, nawet jeśli jest stała int i. Np .: double a; Const int i i = a; a ++; nie wpłynie na mnie

questionAnswers(4)

yourAnswerToTheQuestion