Back
Close

Herencia en C++ (Práctica 3)

camilocorreaUdeA
2,599 views

Redefinición de métodos

Los métodos que se heredan de una clase base no necesariamente deben conservar la misma definición/implementación en las clases derivadas, es decir, un método heredado puede ser redefinido en la clase derivada de modo que se conserve la misma firma (declaración) pero que el código que implementa la funcionalidad sea distinto, o bien agregue modificaciones a la implementación original de la clase base. Ejemplo:

#include<iostream>
using namespace std;
class ClaseBase
{
public:
void unMetodoCualquiera(std::string str)
{
for(int i=0; i<str.size(); ++i)
cout<<str[i]<<"__";
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Orden de ejecución de constructores y destructores en una clase derivada

Cuando se instancia un objeto del tipo de una clase derivada se ejecuta de manera implícita el constructor de la clase base justo antes de que se ejecute el constructor de la clase derivada. De manera análoga sucede con los destructores, pero en este caso se ejecuta primero el destructor de la clase derivada y luego el constructor de la clase base. El siguiente ejemplo ilustra el comportamiento descrito:

#include<iostream>
using namespace std;
class ClaseBase
{
public:
static int inst;
ClaseBase()
{
cout<<"Hola, soy la clase Base"<<endl;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Tipos de herencia en C++ de acuerdo con la estructura de jerarquía

  • Herencia simple: Este tipo de herencia se da cuando una clase derivada hereda solo de una clase base y de igual modo la clase base no hereda a ninguna otra clase.
  • class BaseA
    {
    };
    
    class DerivadaBdeA: public BaseA
    {
    };
    
  • Herencia múltiple: Ocurre cuando una clase derivada hereda de más de una base clase al tiempo.
  • class BaseA
    {
    };
    
    class BaseB
    {
    };
    
    class DerivadaCdeAyB: public BaseA, public BaseB
    {
    };
    
  • Herencia multinivel: Este tipo de herencia se da cuando una clase derivada 'X' hereda de una clase base a través de otra clase intermediaria que actúa como clase derivada para la clase base original y como clase base para la clase derivada 'X'.
  • class BaseA
    {
    };
    
    class DerivadaBdeA: public BaseA
    {
    };
    
    class DerivadaCdeB: public BaseB
    {
    };
    
  • Herencia jerárquica: Ocurre cuando varias clases derivadas heredan de una clase base en común.
  • class BaseA
    {
    };
    
    class DerivadaBdeA: public BaseA
    {
    };
    
    class DerivadaCdeA: public BaseA
    {
    };
    
  • Herencia híbrida: Este tipo de herencia ocurre cuando se combinan dos o más tipos de las herencias mencionadas anteriormente.
  • class BaseA
    {
    };
    
    class DerivadaBdeA: public BaseA
    {
    };
    
    class DerivadaCdeAyB: public BaseA, public BaseB
    {
    };
    
Create your playground on Tech.io
This playground was created on Tech.io, our hands-on, knowledge-sharing platform for developers.
Go to tech.io
codingame x discord
Join the CodinGame community on Discord to chat about puzzle contributions, challenges, streams, blog articles - all that good stuff!
JOIN US ON DISCORD
Online Participants