Puntero de clase base que apunta a un objeto de clase derivado

El puntero es un tipo de datos que almacena la dirección de otros tipos de datos.

El puntero de la clase base que apunta a un objeto diferente de la clase derivada:

 

Acercarse:

  • Una clase derivada es una clase que toma algunas propiedades de su clase base.
  • Es cierto que un puntero de una clase puede apuntar a otra clase, pero las clases deben ser una clase base y derivada, entonces es posible.
  • Para acceder a la variable de la clase base, se utilizará el puntero de la clase base.
  • Entonces, un puntero es un tipo de clase base, y puede acceder a todas las funciones públicas y variables de la clase base, ya que el puntero es de la clase base, esto se conoce como puntero vinculante.
  • En este puntero, la clase base es propiedad de la clase base pero apunta a un objeto de clase derivado .
  • Lo mismo funciona con el puntero de clase derivado, los valores se cambian.

A continuación se muestra el programa C++ para ilustrar la implementación del puntero de clase base que apunta a la clase derivada:

C++

// C++ program to illustrate the
// implementation of the base class
// pointer pointing to derived class
#include <iostream>
using namespace std;
 
// Base Class
class BaseClass {
public:
    int var_base;
 
    // Function to display the base
    // class members
    void display()
    {
        cout << "Displaying Base class"
             << " variable var_base: " << var_base << endl;
    }
};
 
// Class derived from the Base Class
class DerivedClass : public BaseClass {
public:
    int var_derived;
 
    // Function to display the base
    // and derived class members
    void display()
    {
        cout << "Displaying Base class"
             << "variable var_base: " << var_base << endl;
        cout << "Displaying Derived "
             << " class variable var_derived: "
             << var_derived << endl;
    }
};
 
// Driver Code
int main()
{
    // Pointer to base class
    BaseClass* base_class_pointer;
    BaseClass obj_base;
    DerivedClass obj_derived;
 
    // Pointing to derived class
    base_class_pointer = &obj_derived;
 
    base_class_pointer->var_base = 34;
     
      // If you uncomment this line of code this will cause the following error
      // As base-class pointer cannot access the derived class variable. 
      //base_class_pointer->var_derived = 98;
      //output: error: ‘class BaseClass’ has no member named ‘var_derived’
     
      // Calling base class member function
    base_class_pointer->display();
 
    base_class_pointer->var_base = 3400;
    base_class_pointer->display();
 
    DerivedClass* derived_class_pointer;
    derived_class_pointer = &obj_derived;
    derived_class_pointer->var_base = 9448;
    derived_class_pointer->var_derived = 98;
    derived_class_pointer->display();
   
       
 
    return 0;
}
Producción

Displaying Base class variable var_base: 34
Displaying Base class variable var_base: 3400
Displaying Base classvariable var_base: 9448
Displaying Derived  class variable var_derived: 98

Producción:

Displaying Base class variable var_base: 34
Displaying Base class variable var_base: 3400
Displaying Base classvariable var_base: 9448
Displaying Derived  class variable var_derived: 98

Conclusión:

  • Un puntero a la clase derivada es un puntero de la clase base que apunta a la clase derivada, pero mantendrá su aspecto.
  • Este puntero de clase base podrá moderar funciones y variables de su propia clase y aún puede apuntar a un objeto de clase derivado.

Publicación traducida automáticamente

Artículo escrito por vasuvijayvargiya240 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 *