Ver Mensaje Individual
  #5 (permalink)  
Antiguo 22/03/2010, 14:38
CalgaryCorpus
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 11 meses
Puntos: 61
Respuesta: error en codigo

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 original
  1. class C
  2. {
  3.     const int i;
  4.  
  5.     C() : i(10)     // <-- antes de las llaves,
  6.                     //     momento correcto para inicializar constantes
  7.     {
  8.     }
  9. };

y no

Código C++:
Ver original
  1. class C
  2. {
  3.     const int i;
  4.  
  5.     C()
  6.     {
  7.         i = 10;     // <-- despues de las llaves, objeto ya construido,
  8.                     //     error de compilacion
  9.     }
  10. };

"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.

Última edición por CalgaryCorpus; 22/03/2010 a las 14:50