El codigo que esta al interior de las llaves del constructor se ejecuta despues de haber construido el objeto, es debido a esto que se usa
Código C++:
Ver originalclass C
{
const int i;
C() : i(10) // <-- antes de las llaves,
// momento correcto para inicializar constantes
{
}
};
y no
Código C++:
Ver originalclass C
{
const int i;
C()
{
i = 10; // <-- despues de las llaves, objeto ya construido,
// error de compilacion
}
};
"Una constante no se inicializa" es una mala regla. De hecho eso es lo que hace que una constante lo sea. La inicializacion. Lo que no puede hacerse es asignar un valor posterior a la inicializacion, que no es lo que se esta haciendo en el codigo mostrado al principio, pues esto se ejecuta en el momento de la construccion.