Preguntas y Respuestas Clave sobre POO y C++

Clasificado en Informática

Escrito el en español con un tamaño de 3,56 KB

Similitudes y diferencias entre método abstracto y método virtual

Ambos poseen enlace dinámico. La diferencia principal radica en que un método abstracto carece de implementación, mientras que un método virtual sí puede tenerla.

Importancia del destructor virtual en clases abstractas

El destructor de una clase abstracta debe tener enlace dinámico para posibilitar la destrucción correcta de un objeto de una clase derivada a través de una variable polimórfica de clase base.

Ejemplo: A* v = new B; delete v;

  • Si el destructor de A no es virtual, solo se invocará al destructor de A.
  • Si es virtual, se invocará también al destructor de B, garantizando la limpieza de recursos.

Uso no seguro de la herencia

Existen dos formas principales de uso incorrecto:

  • Generalización: Uso inverso de la herencia, empleada para generalizar en lugar de especificar.
  • Restricción: Ocurre cuando no todas las propiedades de la clase base son aplicables a la clase derivada.

Características de una interfaz en C++

Para que una clase sea considerada una interfaz, debe cumplir con:

  • Todos sus métodos deben ser abstractos y públicos.
  • No debe tener variables de instancia.
  • Solo puede contener variables constantes.

Agregación frente a Composición

La diferencia fundamental reside en el ciclo de vida de los objetos:

  • Agregación: Los objetos ‘parte’ no son destruidos si se destruye el objeto ‘todo’.
  • Composición: Los objetos ‘parte’ sí son destruidos al destruir el objeto ‘todo’.

Desventajas de reutilizar el operador de asignación

Al implementar el constructor de copia reutilizando el operador de asignación, se genera una ineficiencia, ya que el operador de asignación volverá a inicializarse innecesariamente.

Redefinición vs. Sobrecarga

  • Redefinición: Ocurre dentro de jerarquías de herencia.
  • Sobrecarga: No implica necesariamente una jerarquía de herencia.

Sobre escritura vs. Shadowing

  • Sobre escritura: Requiere jerarquía de herencia y enlace dinámico.
  • Shadowing: Requiere jerarquía de herencia y enlace estático.

Clase en forma canónica

La definición de una clase en forma canónica es obligatoria para asegurar el correcto manejo de la memoria dinámica.

Usos de la palabra reservada const

  1. Miembros constantes.
  2. Objetos constantes.
  3. Operaciones constantes.

Diferencias entre constructor y función miembro ordinaria

  • El constructor no devuelve ningún valor.
  • El constructor se encarga de crear o inicializar instancias.
  • El constructor siempre tiene el mismo nombre que la clase.
  • En la herencia, el constructor no se hereda.
  • Un constructor está siempre presente en la clase (por defecto o definido por el usuario).

Entradas relacionadas: