es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo se construyen los objetos de las clases derivadas en C++?

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en marcado.

No soy un experto en C ++, he hecho principalmente Java y C#. Un profesor dijo algo que me confundió hoy. Intenté validar la información haciendo algunas investigaciones, pero terminé aún más confundido.

Digamos que tengo la clase A y la clase B. La clase A es la clase base y B se deriva de A.

Ahora sé que cuando se crea un objeto de la clase B, se llama al constructor de la clase A y luego al constructor de la clase B. De manera similar, cuando se destruye un objeto de la clase B, se llama al destructor de la clase B y luego a los de la clase A.

Hasta ahora, mi comprensión era que la Clase B contiene todo de la Clase A excepto sus constructores y destructores. Pensé que cuando se construía un objeto de la Clase B, solo se creaba un objeto (de ambos tipos A y B) en la memoria.

Ahora mi profesor dice que cuando se construye B, se crean 2 objetos separados y de alguna manera “vinculados” entre sí: uno de clase A y luego uno de clase B. Ambos objetos existirían en memoria hasta que se llame a la destrucción del objeto de la clase B. Luego, el objeto de la clase B se destruiría antes que el objeto de la clase A.

¿Cuál es el correcto?

PD: Lo siento si mi inglés es más o menos, no es mi lengua materna …

Edit: intentaré reformular:

Creo que: La clase B contiene todos los atributos y métodos de la clase A. Cuando creo un objeto de la clase B, solo existe 1 objeto en memoria. El constructor de la clase A se llama solo para inicializar la parte de mi objeto que era originalmente de la clase A.

El profesor dijo: Cuando creo un objeto de la clase B, se crean 2 objetos en memoria. Cuando ordeno la destrucción de mi objeto, el objeto de clase B que está en memoria se destruye primero, y luego se destruye el objeto de clase A que también permanece en memoria. El profesor nunca pudo aclarar cómo el objeto de clase B puede usar los métodos y atributos del objeto de clase A.

Para mí, eso también parece implicar que hay un “objeto fantasma” en alguna parte de la memoria del cual no tengo conocimiento y sobre el cual tengo casi ningún control.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Tu profesor tiene razón. Cuando creas un objeto de la clase B, se crean dos objetos en la memoria: uno de la clase A y otro de la clase B. El objeto de la clase B está vinculado al objeto de clase A, y puede acceder a los métodos y atributos del objeto de clase A. El objeto de la clase B se destruye primero, seguido por el objeto de la clase A.

    Esto se conoce como herencia y es un concepto fundamental en la programación orientada a objetos. Cuando creas un objeto de una clase derivada, primero se llama al constructor de la clase base y después se llama al constructor de la clase derivada. De manera similar, cuando se destruye el objeto, primero se llama al destructor de la clase derivada, seguido por el destructor de la clase base.

Comments are closed.