Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Lenguaje C

Anulación de funciones de C++

Sustitución de funciones de C++

En este tutorial, aprenderemos sobre la anulación de funciones en C++ con la ayuda de ejemplos.

Como sabemos, la herencia es una característica de OOP que nos permite crear clases derivadas a partir de una clase base. Las clases derivadas heredan características de la clase base.

Supongamos que la misma función se define tanto en la clase derivada como en la clase basada. Ahora bien, si llamamos a esta función utilizando el objeto de la clase derivada, se ejecuta la función de la clase derivada.

Esto se conoce como anulación de funciones. en C++. La función en la clase derivada anula la función en la clase base.


Ejemplo 1:anulación de funciones de C++

// C++ program to demonstrate function overriding

#include <iostream>
using namespace std;

class Base {
   public:
    void print() {
        cout << "Base Function" << endl;
    }
};

class Derived : public Base {
   public:
    void print() {
        cout << "Derived Function" << endl;
    }
};

int main() {
    Derived derived1;
    derived1.print();
    return 0;
}

Salida

Derived Function

Aquí, la misma función print() se define en ambos Base y Derived clases.

Entonces, cuando llamamos a print() del Derived objeto derivado1 , el print() de Derived se ejecuta anulando la función en Base .

Como podemos ver, la función se anuló porque llamamos a la función desde un objeto del Derived clase.

Si hubiéramos llamado al print() función de un objeto del Base clase, la función no se habría anulado.

// Call function of Base class
Base base1;
base1.print(); // Output: Base Function

Acceder a la función anulada en C++

Para acceder a la función anulada de la clase base, usamos el operador de resolución de alcance :: .

También podemos acceder a la función anulada usando un puntero de la clase base para apuntar a un objeto de la clase derivada y luego llamando a la función desde ese puntero.

Ejemplo 2:función anulada de acceso de C++ a la clase base

// C++ program to access overridden function
// in main() using the scope resolution operator ::

#include <iostream>
using namespace std;

class Base {
   public:
    void print() {
        cout << "Base Function" << endl;
    }
};

class Derived : public Base {
   public:
    void print() {
        cout << "Derived Function" << endl;
    }
};

int main() {
    Derived derived1, derived2;
    derived1.print();

    // access print() function of the Base class
    derived2.Base::print();

    return 0;
}

Salida

Derived Function
Base Function

Aquí, esta declaración

derived2.Base::print();

accede al print() función de la clase Base.


Ejemplo 3:Función anulada de llamada C++ de clase derivada

// C++ program to call the overridden function
// from a member function of the derived class

#include <iostream>
using namespace std;

class Base {
   public:
    void print() {
        cout << "Base Function" << endl;
    }
};

class Derived : public Base {
   public:
    void print() {
        cout << "Derived Function" << endl;

        // call overridden function
        Base::print();
    }
};

int main() {
    Derived derived1;
    derived1.print();
    return 0;
}

Salida

Derived Function
Base Function

En este programa, hemos llamado a la función anulada dentro del Derived clase en sí.

class Derived : public Base {
   public:
    void print() {
        cout << "Derived Function" << endl;
        Base::print();
    }
};

Observe el código Base::print(); , que llama a la función anulada dentro del Derived clase.


Ejemplo 4:Función anulada de llamada de C++ usando un puntero

// C++ program to access overridden function using pointer
// of Base type that points to an object of Derived class

#include <iostream>
using namespace std;

class Base {
   public:
    void print() {
        cout << "Base Function" << endl;
    }
};

class Derived : public Base {
   public:
    void print() {
        cout << "Derived Function" << endl;
    }
};

int main() {
    Derived derived1;

    // pointer of Base type that points to derived1
    Base* ptr = &derived1;

    // call function of Base class using ptr
    ptr->print();

    return 0;
}

Salida

Base Function

En este programa, hemos creado un puntero de Base tipo llamado ptr . Este puntero apunta al Derived objeto derivado1 .

// pointer of Base type that points to derived1
Base* ptr = &derived1;

Cuando llamamos al print() función usando ptr , llama a la función anulada desde Base .

// call function of Base class using ptr
ptr->print();

Esto se debe a que aunque ptr apunta a un Derived objeto, en realidad es de Base escribe. Entonces, llama a la función miembro de Base .

Para anular el Base función en lugar de acceder a ella, necesitamos usar funciones virtuales en el Base clase.


Lenguaje C

  1. Operadores de C++
  2. Comentarios de C++
  3. Pasar matriz a una función en programación C++
  4. Funciones de C++ con ejemplos de programas
  5. C - Funciones
  6. Descripción general de C++
  7. Constantes/Literales de C++
  8. Operadores en C++
  9. Números en C++
  10. Sobrecarga de C++ (operador y función)
  11. Polimorfismo en C++