Estoy confundido sobre cuáles podrían ser los problemas si un constructor fuera heredado de una clase base. Cpp Primer Plus dice:
Los constructores son diferentes de otros métodos de clase en que crean nuevos objetos, mientras que otros métodos son invocados por objetos existentes . Esta es una razón por la que los constructores no se heredan . La herencia significa que un objeto derivado puede usar un método de clase base, pero, en el caso de los constructores, el objeto no existe hasta después de que el constructor haya hecho su trabajo.
Entiendo que se llama al constructor antes de que se complete la construcción del objeto.
¿Cómo puede conducir a problemas si una clase secundaria hereda ( al heredar quiero decir que la clase secundaria puede anular el método de la clase primaria, etc. No solo acceder al método de la clase primaria ) el constructor primario?
Entiendo que no hay necesidad de llamar explícitamente a un constructor dentro de un código [no que yo sepa todavía.] Excepto al crear objetos. Incluso entonces puede hacerlo utilizando algún mecanismo para invocar el constructor principal [En cpp, usando ::
o usando member initialiser list
, En java usando super
]. En Java hay una aplicación para llamarlo en la primera línea, entiendo que es para asegurarse de que el objeto primario se crea primero y luego continúa la construcción del objeto secundario.
Puede anularlo . Pero no puedo encontrar situaciones en las que esto pueda plantear un problema. Si el hijo hereda el constructor principal, ¿qué puede salir mal?
Entonces, esto es solo para evitar heredar funciones innecesarias. ¿O hay más?