Funciones virtuales puras y clases abstractas en C++

A veces, la implementación de todas las funciones no se puede proporcionar en una clase base porque no conocemos la implementación. Tal clase se llama clase abstracta. Por ejemplo, sea Shape una clase base. No podemos proporcionar la implementación de la función dibujar() en Shape, pero sabemos que cada clase derivada debe tener una implementación … Continue reading «Funciones virtuales puras y clases abstractas en C++»

Funciones virtuales y polimorfismo en tiempo de ejecución en C++

Una función virtual es una función miembro que se declara en la clase base mediante la palabra clave virtual y se redefine (anulada) en la clase derivada . Le dice al compilador que realice un enlace tardío donde el compilador hace coincidir el objeto con la función llamada correcta y lo ejecuta durante el tiempo … Continue reading «Funciones virtuales y polimorfismo en tiempo de ejecución en C++»

¿Funciona la sobrecarga con Herencia?

Si tenemos una función en la clase base y otra función con el mismo nombre en la clase derivada, ¿se puede llamar a la función de la clase base desde el objeto de la clase derivada? Esta es una pregunta interesante y, como experimento, prediga la salida del siguiente programa C++ :  C++ #include <iostream> … Continue reading «¿Funciona la sobrecarga con Herencia?»

Comparación de herencia en C++ y Java

El propósito de la herencia es el mismo en C++ y Java. La herencia se usa en ambos lenguajes para reutilizar código y/o crear una relación ‘es-a’. Los siguientes ejemplos demostrarán las diferencias entre Java y C++ que brindan soporte para la herencia.  1) En Java, todas las clases heredan de la clase Object directa … Continue reading «Comparación de herencia en C++ y Java»

Preguntas de la entrevista de C++ sobre función virtual y clase abstracta

1. ¿Qué es una función virtual pura ? Respuesta Una función virtual pura (o función abstracta) en C++ es una función virtual para la cual no tenemos implementación, solo la declaramos. Una función virtual pura se declara asignando 0 en la declaración. Vea el siguiente ejemplo. // An abstract class class Test {     // Data … Continue reading «Preguntas de la entrevista de C++ sobre función virtual y clase abstracta»

Heredar públicamente una clase base pero hacer parte del método público como privado

Hay ciertas situaciones en las que queremos hacer que algunas de las funciones de la clase base pública sean privadas en la clase derivada. Supongamos que tanto la clase base como la secundaria tienen métodos getter y setter // CPP program to demonstrate that all base // class public functions become available // in derived … Continue reading «Heredar públicamente una clase base pero hacer parte del método público como privado»

Llamar a métodos virtuales en constructor/destructor en C++

Requisito previo: función virtual en C++ Llamar funciones virtuales desde un constructor o destructor se considera peligroso la mayoría de las veces y debe evitarse siempre que sea posible. Todas las implementaciones de C++ deben llamar a la versión de la función definida en el nivel de la jerarquía en el constructor actual y no … Continue reading «Llamar a métodos virtuales en constructor/destructor en C++»

Qué sucede cuando se llama a una función virtual dentro de una función no virtual en C++

Prediga la salida del siguiente programa C++ simple sin ninguna función virtual. #include <iostream> using namespace std;    class Base { public:     void print()     {         cout << «Base class print function \n»;     }     void invoke()     {         cout << «Base class invoke function \n»;         this -> print();     } };    class Derived: public Base { public: … Continue reading «Qué sucede cuando se llama a una función virtual dentro de una función no virtual en C++»

¿Qué se hereda de la clase principal en C++?

Las siguientes son las cosas que una clase derivada hereda de su padre. 1) Cada miembro de datos que se define en la clase principal (¡aunque es posible que dichos miembros no siempre estén accesibles en la clase derivada!). 2) Cada función miembro ordinaria de la clase principal (¡aunque es posible que dichos miembros no siempre … Continue reading «¿Qué se hereda de la clase principal en C++?»