2010-06-16 9 views

Respuesta

2

Lea this. Esta página también es útil para muchas otras preguntas que puede tener por el camino de la piedra de aprender C++.

En general, no es necesario, pero debería hacerlo. Confiar en los valores predeterminados realmente puede volver duro para usted. También esto hace que el código sea mejor para otros. Tenga en cuenta que la lista de inicialización no afecta el orden en el que se inicializan los miembros, que está determinado por el orden en que se declaran en la clase.

+0

el enlace se ha ido –

+0

@vlad_tepesch, gracias por su aviso, se movió [aquí] (https://isocpp.org/wiki/faq/ctors). –

4

Sí, eso es necesario. Su objeto se asignará en la pila o en el montón. No tiene forma de saber qué valores contiene la memoria, y el tiempo de ejecución no garantiza que esto sea cero, por lo que debe inicializar la variable.

+0

También se pueden asignar en almacenamiento estático. Creo que la inicialización del valor se realiza en ese contexto, por lo que sería 0 automáticamente, pero no estoy seguro. – fredoverflow

+1

Esta respuesta es mucho mejor y más simple que la superior. – Darioush

+0

@Darioush Sí, es más simple ya que cubre el caso habitual _only_ mientras que [el superior] (https://stackoverflow.com/a/3053257/711006) cubre todos los casos. – Melebius

12

¿Tengo que inicializar variables miembro de clase simples ,

No, usted no tiene para inicializar las variables miembro. Sin embargo, si no los inicializa, no suponga que tendrán ningún valor.

Si realiza un programa de prueba y comprueba en el depurador cómo se inicializan los valores, puede verlos inicializados como ceros, pero eso no está garantizado. Los valores se inicializan a lo que está en la memoria en la pila en esa ubicación.

o tienen garantizados sus valores predeterminados en cualquier caso?

No se garantiza que se les asigne ningún valor. Si tiene objetos miembro, se llamarán a los constructores por defecto, pero para los tipos POD no hay inicialización predeterminada.

Aunque no tiene que hacerlo, es una buena práctica inicializar todos los miembros de su clase (para evitar errores difíciles de encontrar y tener una representación explícita de las llamadas de inicialización/constructor).

Cuestiones relacionadas