El método constructor se utiliza para inicializar los objetos de la clase. A diferencia de otros miembros de la clase padre, no puede ser heredado por la subclase (la subclase puede heredar todas las variables miembro y métodos miembro de la clase padre, pero no hereda el método constructor de la clase padre). Por lo tanto, al crear un objeto de la subclase, para inicializar los miembros de datos heredados de la clase padre, el sistema necesita llamar al método constructor de su clase padre.
Si no hay un constructor explícito, el compilador proporciona un constructor predeterminado, y este constructor predeterminado solo se crea cuando no se ha declarado explícitamente ningún constructor.
Los principios de construcción son los siguientes:
- 1. Si la subclase no define un método constructor, se llama al método constructor sin parámetros de la clase padre.
- 2. Si la subclase define un método constructor, ya sea sin parámetros o con parámetros, al crear un objeto de la subclase, primero se ejecuta el método constructor sin parámetros de la clase padre y luego se ejecuta su propio método constructor.
- 3. Al crear un objeto de la subclase, si el constructor de la subclase no llama explícitamente al constructor de la clase padre, se llamará al constructor predeterminado sin parámetros de la clase padre.
- 4. Al crear un objeto de la subclase, si el constructor de la subclase no llama explícitamente al constructor de la clase padre y la clase padre proporciona su propio constructor sin parámetros, se llamará al constructor sin parámetros de la propia clase padre.
- 5. Al crear un objeto de la subclase, si el constructor de la subclase no llama explícitamente al constructor de la clase padre y la clase padre solo define su propio constructor con parámetros, se producirá un error (si la clase padre solo tiene un método constructor con parámetros, la subclase debe llamar explícitamente a este método constructor con parámetros).
- 6. Si la subclase llama al método constructor con parámetros de la clase padre, debe hacerlo mediante la inicialización de los objetos miembro de la clase padre, por ejemplo:
Ejemplo
Después del constructor de la clase fish, añade un signo de dos puntos:y luego añade el constructor con parámetros de la clase padre. De esta manera, cuando se llama al constructor de la subclase, el sistema llamará al constructor con parámetros de la clase padre para construir el objeto.
Por ejemplo, en la herencia de CDialog, común en MFC, se puede ver este tipo de ejemplo..
Ejemplo
Archivo de implementación
Ejemplo
Este método de inicialización también se utiliza a menudo para inicializar miembros constantes (const) de la clase, como se muestra en el siguiente código:
Ejemplo
Por supuesto, las variables miembro ordinarias de la clase también pueden inicializarse de esta manera, sin embargo, esto no es necesario..
Fuente: http://blog.jobbole.com/109500/