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
Ano es virtual, solo se invocará al destructor deA. - 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
- Miembros constantes.
- Objetos constantes.
- 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).