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