¿Cómo funciona el siguiente código en C++? ¿Es lógico?Inicialización literal para referencias const
const int &ref = 9;
const int &another_ref = ref + 6;
¿Por qué C++ permite la inicialización literal para referencias const cuando el mismo no está permitida para las referencias no constante? Ej .:
const int days_of_week = 7;
int &dof = days_of_week; //error: non const reference to a const object
Esto puede explicarse por el hecho de que, una referencia no const se puede utilizar para cambiar el valor de la variable que se está refiriendo. Por lo tanto, C++ no permite una referencia no const a una variable const.
¿Podría ser esta una posible explicación? C++ no permite:
int &ref = 7;
Debido a que no es lógico, pero:
const int &ref = 7;
es casi equivalente a:
const int val = 7;
inicialización tan literal que está permitido para las variables const.
P.S .: Actualmente estoy estudiando Lippman's C++ Primer.
+1. Pero creo que su segundo ejemplo se transformará en { cadena __internal_unique_name ("foobar"); f (__ internal_unique_name); } – mmmmmmmm
@rstevens: no importa: la conversión no debe ser explícita, en cuyo caso son los mismos. –