C++ consente l'assegnazione di oggetti temporanei solo al riferimento const. Non consentirà l'assegnazione di oggetti temporanei a riferimento.Perché non riferimento non const a oggetti temporanei?
Ad esempio:
String& a = String("test"); // Error
const String& a = String("test"); // Ok
Ovunque Google per questo risultato, vedo solo le seguenti risposte
- Modifica oggetti temporanei causerebbe problemi non identificabili
- Modifica oggetti temporanei è pericoloso
- Ad un certo punto del tempo, ti dimenticherai che è una variabile temporanea
Si è detto, gli oggetti temporanei svaniscono dopo la dichiarazione. Quindi non dovresti modificarlo.
Se C++ è così appassionato nel bloccare la modifica degli oggetti temporanei, dovrebbe aver bloccato la lettura degli oggetti temporanei giusto? Se l'oggetto temporaneo è sparito, non ha senso leggere i contenuti da lì giusto? I casi possibili, in cui può verificarsi un diritto, potrebbero anche comportare la lettura.
Quindi perché ha bloccato la scrittura da sola e consentendo la lettura?
Per favore dammi una spiegazione del codice C++ solido.
Si prega di non deviare la domanda indicando alcune alternative. Per favore, dammi una risposta valida con il codice perché const int & è consentito e int & non è consentito per oggetti temporanei.
Uno dice & & è lì .. La mia domanda diversa .. altro dire, cambiando non rifletterà .. La modifica non rifletterà anche quando è const int & troppo. Ad esempio: doppio a; Const int & i = a; a ++; non influenza i ..
Non sono sicuro di aver capito la domanda. [Questo] (http://stacked-crooked.com/view?id=49e766dcb26e7f773e3b497c2ff41a52) conta come una lettura temporanea? Se stai parlando di uno che è passato a una funzione, devi copiarlo, spostarlo o usare un riferimento const, che estende la sua durata. – chris
+1 Mi sono chiesto anche questo. – Mehrdad
Penso che sia molto difficile analizzare tutti i riferimenti a un oggetto per gli autori di compilatori per fornire garanzie. –