Diferencia entre contenedor y herencia en C++

Portacontenedores : cuando un objeto de una clase se crea en otra clase, ese objeto será miembro de esa clase, este tipo de relación entre las clases se conoce como portacontenedores o relación has_a , ya que una clase contiene el objeto de otra clase.

La clase que contiene el objeto y los miembros de otra clase en este tipo de relación se denomina clase contenedora y el objeto que forma parte de otro objeto se denomina objeto contenido, mientras que el objeto que contiene otro objeto como parte o atributo se denomina clase contenedora. objeto contenedor .

Sintaxis para portacontenedores :

C++

// Class that is to be contained
class first {
  
    // Class Definition
};
  
// Container class
class second {
  
    // Creating object of first
    first f;
    .
        .
};

Programa 1:

A continuación se muestra el programa para explicar el concepto de portacontenedores en C++ :

C++

// C++ program to illustrate the
// concept of containership
#include <iostream>
using namespace std;
  
class first {
public:
    void showf()
    {
        cout << "Hello from first class\n";
    }
};
  
// Container class
class second {
  
    // Create object of the first-class
    first f;
  
public:
    // Define Constructor
    second()
    {
        // Call function of first-class
        f.showf();
    }
};
  
// Driver Code
int main()
{
    // Create object of second class
    second s;
}
Producción:

Hello from first class

Explicación: En la segunda clase anterior, hay un objeto de clase primero . Este tipo de herencia se conoce como relación has_a ya que la clase second tiene un objeto de class first como miembro. Desde el objeto f , se llama primero a la función de clase .

Herencia : Es la capacidad de una clase para derivar propiedades y características de otra clase que se conoce como Clase Base . Es una de las características más importantes de la Programación Orientada a Objetos . La clase que hereda propiedades de otra clase se llama Subclase o Clase Derivada . La clase cuyas propiedades se heredan por subclase se denomina Clase base o Superclase .

Sintaxis:

C++

class subclass_name : access_mode base_class_name {
    // body of subclass
};

Explicación: subclass_name es el nombre de la subclase, access_mode es el modo en el que uno quiere heredar esta subclase. Por ejemplo, public , private , etc. Base_class_name es el nombre de la clase base de la que se quiere heredar la subclase.

Nota: una clase derivada no hereda el acceso a miembros de datos privados. Sin embargo, hereda un objeto principal completo, que contiene los miembros privados que declara esa clase.

Programa 2:

A continuación se muestra el programa para explicar la herencia en C++:

C++

// C++ program to demonstrate the
// concept of inheritance
  
#include <bits/stdc++.h>
using namespace std;
  
// Base class
class Parent {
public:
    int id_p;
};
  
// Sub class inheriting from the
// Base Class(Parent)
class Child : public Parent {
public:
    int id_c;
};
  
// Driver Code
int main()
{
  
    Child obj1;
  
    // An object of class child has
    // all data members and member
    // functions of class parent
    obj1.id_c = 7;
    obj1.id_p = 91;
  
    cout << "Child ID is "
         << obj1.id_c << endl;
  
    cout << "Parent ID is "
         << obj1.id_p << endl;
  
    return 0;
}
Producción:

Child ID is 7
Parent ID is 91

Explicación: En el programa anterior, la clase secundaria se hereda públicamente de la clase principal, por lo que la clase secundaria también heredará los miembros de datos públicos de la clase principal.

Diferencia entre herencia y portacontenedores :

Herencia Barco mercante
Permite que una clase herede datos y funciones de una clase base Permite que una clase contenga objetos de diferentes clases como su miembro de datos.
La clase derivada puede anular la funcionalidad de la clase base. La clase contenedora no puede anular la funcionalidad de la clase contenida.
La clase derivada puede agregar datos o funciones a la clase base. La clase contenedora no puede agregar nada a la clase contenida.
La herencia representa una relación «es-un» . El portacontenedores representa una relación de «tiene un» .

Publicación traducida automáticamente

Artículo escrito por aman362 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *