Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Remplacement de fonction C++

Remplacer les fonctions C++

Dans ce didacticiel, nous allons apprendre à remplacer les fonctions en C++ à l'aide d'exemples.

Comme nous le savons, l'héritage est une fonctionnalité de la POO qui nous permet de créer des classes dérivées à partir d'une classe de base. Les classes dérivées héritent des fonctionnalités de la classe de base.

Supposons que la même fonction soit définie à la fois dans la classe dérivée et dans la classe basée. Maintenant, si nous appelons cette fonction en utilisant l'objet de la classe dérivée, la fonction de la classe dérivée est exécutée.

Ceci est connu sous le nom de remplacement de fonction en C++. La fonction dans la classe dérivée remplace la fonction dans la classe de base.

Exemple 1 :Remplacement de fonction 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;
}

Sortie

Derived Function

Ici, la même fonction print() est défini à la fois dans Base et Derived cours.

Ainsi, lorsque nous appelons print() du Derived objet dérivé1 , le print() à partir de Derived est exécuté en remplaçant la fonction dans Base .

Comme nous pouvons le voir, la fonction a été remplacée car nous avons appelé la fonction à partir d'un objet du Derived classe.

Si nous avions appelé le print() fonction à partir d'un objet du Base classe, la fonction n'aurait pas été remplacée.

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

Fonction d'accès prioritaire en C++

Pour accéder à la fonction surchargée de la classe de base, nous utilisons l'opérateur de résolution de portée :: .

Nous pouvons également accéder à la fonction surchargée en utilisant un pointeur de la classe de base pour pointer vers un objet de la classe dérivée, puis en appelant la fonction à partir de ce pointeur.

Exemple 2 : Fonction d'accès C++ remplacée à la classe de 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;
}

Sortie

Derived Function
Base Function

Tiens, cette déclaration

derived2.Base::print();

accède au print() fonction de la classe Base.

Exemple 3 :Appel C++ d'une fonction remplacée à partir d'une classe dérivée

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

Sortie

Derived Function
Base Function

Dans ce programme, nous avons appelé la fonction redéfinie à l'intérieur du Derived classe elle-même.

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

Remarquez le code Base::print(); , qui appelle la fonction remplacée à l'intérieur du Derived classe.

Exemple 4 :Appel C++ d'une fonction remplacée à l'aide d'un pointeur

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

Sortie

Base Function

Dans ce programme, nous avons créé un pointeur de Base type nommé ptr . Ce pointeur pointe vers le Derived objet dérivé1 .

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

Lorsque nous appelons le print() fonction utilisant ptr , il appelle la fonction remplacée à partir de Base .

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

C'est parce que même si ptr pointe vers un Derived objet, il est en fait de Base taper. Ainsi, il appelle la fonction membre de Base .

Afin de remplacer le Base fonction au lieu d'y accéder, nous devons utiliser des fonctions virtuelles dans le Base classe.


Langue C

  1. Opérateurs C++
  2. Commentaires C++
  3. Passage d'un tableau à une fonction en programmation C++
  4. Fonctions C++ avec exemples de programmes
  5. C-Fonctions
  6. Présentation de C++
  7. Constantes/littéraux C++
  8. Opérateurs en C++
  9. Les nombres en C++