Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C++ Functie Overschrijven

C++ Functie Overschrijven

In deze tutorial zullen we met behulp van voorbeelden leren over het overschrijven van functies in C++.

Zoals we weten, is overerving een functie van OOP waarmee we afgeleide klassen kunnen maken van een basisklasse. De afgeleide klassen nemen kenmerken van de basisklasse over.

Stel dat dezelfde functie is gedefinieerd in zowel de afgeleide klasse als de gebaseerde klasse. Als we deze functie nu aanroepen met het object van de afgeleide klasse, wordt de functie van de afgeleide klasse uitgevoerd.

Dit staat bekend als functieoverschrijving in C++. De functie in de afgeleide klasse overschrijft de functie in de basisklasse.


Voorbeeld 1:C++ Functie Overschrijven

// 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;
}

Uitvoer

Derived Function

Hier dezelfde functie print() is gedefinieerd in beide Base en Derived lessen.

Dus als we print() . aanroepen van de Derived object afgeleid1 , de print() vanaf Derived wordt uitgevoerd door de functie in Base . te overschrijven .

Zoals we kunnen zien, is de functie overschreven omdat we de functie hebben aangeroepen vanuit een object van de Derived klasse.

Hadden we de print() . gebeld functie van een object van de Base class, zou de functie niet overschreven zijn.

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

Toegang overschreven functie in C++

Om toegang te krijgen tot de overschreven functie van de basisklasse, gebruiken we de scope resolutie-operator :: .

We kunnen ook toegang krijgen tot de overschreven functie door een aanwijzer van de basisklasse te gebruiken om naar een object van de afgeleide klasse te verwijzen en vervolgens de functie vanaf die aanwijzer aan te roepen.

Voorbeeld 2:C++ Toegang overschreven functie tot de basisklasse

// 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;
}

Uitvoer

Derived Function
Base Function

Hier, deze verklaring

derived2.Base::print();

geeft toegang tot de print() functie van de basisklasse.


Voorbeeld 3:C++ Call Overridden-functie van afgeleide klasse

// 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;
}

Uitvoer

Derived Function
Base Function

In dit programma hebben we de overschreven functie binnen de Derived . aangeroepen klasse zelf.

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

Let op de code Base::print(); , die de overschreven functie binnen de Derived . aanroept klasse.


Voorbeeld 4:C++ Call Overridden-functie met aanwijzer

// 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;
}

Uitvoer

Base Function

In dit programma hebben we een pointer gemaakt van Base type met de naam ptr . Deze aanwijzer wijst naar de Derived object afgeleid1 .

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

Wanneer we de print() . noemen functie met behulp van ptr , roept het de overschreven functie aan van Base .

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

Dit komt omdat, hoewel ptr wijst naar een Derived object, het is eigenlijk van Base type. Het roept dus de lidfunctie van Base . aan .

Om de Base . te overschrijven functie in plaats van er toegang toe te krijgen, moeten we virtuele functies gebruiken in de Base klasse.


C Taal

  1. C++-operators
  2. C++ Opmerkingen
  3. Array doorgeven aan een functie in C++-programmering
  4. C++-functies met programmavoorbeelden
  5. C - Functies
  6. C++-overzicht
  7. C++-constanten/letters
  8. Operatoren in C++
  9. Getallen in C++
  10. C++ overbelasting (operator en functie)
  11. Polymorfisme in C++