Come funziona il seguente codice in C++? È logico?Inizializzazione letterale per riferimenti const
const int &ref = 9;
const int &another_ref = ref + 6;
Perché C++ permette l'inizializzazione letterale per i riferimenti const quando lo stesso non è consentito per i riferimenti non-const? Es .:
const int days_of_week = 7;
int &dof = days_of_week; //error: non const reference to a const object
Ciò può essere spiegato dal fatto che, un riferimento non const può essere utilizzato per modificare il valore della variabile a cui fa riferimento. Quindi, C++ non consente un riferimento non const a una variabile const.
Potrebbe essere una possibile spiegazione? C++ non consente:
int &ref = 7;
perché non è logico, ma:
const int &ref = 7;
è quasi equivalente a:
const int val = 7;
inizializzazione così letterale è consentito per le variabili const.
P.S .: Attualmente sto studiando il Primer C++ di Lippman.
+1. Ma penso che il tuo secondo esempio verrebbe trasformato in { string __internal_unique_name ("foobar"); f (___name_unique_name); } – mmmmmmmm
@rstevens: non importa: la conversione non deve essere esplicita, nel qual caso sono uguali. –