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

Redéfinition de fonction en C++ expliquée - Exemples pratiques et bonnes pratiques

Redéfinition de fonction en C++ expliquée

Ce guide démystifie la redéfinition de fonction en C++, fournissant des exemples clairs, des bonnes pratiques et une explication pas à pas qu'un développeur C++ expérimenté utiliserait en production.

Pourquoi la redéfinition de fonction est importante

En programmation orientée objet, l'héritage permet à une classe dérivée d'étendre ou de modifier le comportement d'une classe de base. Quand la même fonction membre est déclarée dans la classe de base et la classe dérivée, l'implémentation dérivée « redéfinit » celle de la base. Quand vous appelez cette fonction à travers un objet de classe dérivée, la version redéfinie s'exécute.


Exemple 1 : Redéfinition de base

#include <iostream>
using namespace std;

class Base {
public:
    void print() {
        cout << "Fonction de base" << endl;
    }
};

class Derived : public Base {
public:
    void print() {
        cout << "Fonction dérivée" << endl;
    }
};

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

Sortie

Fonction dérivée

L'appel de print() sur une instance Derived exécute la fonction redéfinie, pas la version de base.

Redéfinition de fonction en C++ expliquée - Exemples pratiques et bonnes pratiques

Si vous créez un objet Base et appelez print(), vous verrez l'implémentation de base originale.

Base b; b.print(); // Sortie : Fonction de base

Accès à la fonction de base redéfinie

Parfois, vous devez invoquer explicitement la version de la classe de base. Deux techniques courantes sont :

Exemple 2 : Résolution de portée pour appeler la fonction de base

#include <iostream>
using namespace std;

class Base {
public:
    void print() {
        cout << "Fonction de base" << endl;
    }
};

class Derived : public Base {
public:
    void print() {
        cout << "Fonction dérivée" << endl;
    }
};

int main() {
    Derived d1, d2;
    d1.print();
    d2.Base::print(); // Appel explicite à Base::print
    return 0;
}

Sortie

Fonction dérivée Fonction de base

Exemple 3 : Appel de la fonction de base depuis la classe dérivée

#include <iostream>
using namespace std;

class Base {
public:
    void print() {
        cout << "Fonction de base" << endl;
    }
};

class Derived : public Base {
public:
    void print() {
        cout << "Fonction dérivée" << endl;
        Base::print(); // Invoquer la version de base
    }
};

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

Sortie

Fonction dérivée Fonction de base

Exemple 4 : Utilisation d'un pointeur de base pour accéder à la fonction de base

#include <iostream>
using namespace std;

class Base {
public:
    void print() {
        cout << "Fonction de base" << endl;
    }
};

class Derived : public Base {
public:
    void print() {
        cout << "Fonction dérivée" << endl;
    }
};

int main() {
    Derived d;
    Base* ptr = &d; // Pointeur vers Base pointant vers objet Derived
    ptr->print(); // Appelle Base::print car la fonction n'est pas virtuelle
    return 0;
}

Sortie

Fonction de base

Quand la fonction n'est pas déclarée virtual, un pointeur de classe de base invoque l'implémentation de base. Pour obtenir un comportement polymorphe réel, déclarez la fonction de base virtual et redéfinissez-la dans la classe dérivée.


Ces exemples illustrent la mécanique de la redéfinition de fonction en C++. En maîtrisant ces concepts, vous pouvez écrire un code plus propre et plus maintenable qui tire parti du polymorphisme efficacement.

Langue C

  1. Maîtriser les opérateurs C++ : Guide complet avec exemples pratiques
  2. Commentaires C++ : Bonnes pratiques pour un code lisible et maintenable
  3. Comment passer des tableaux aux fonctions en C++ : Guide pratique
  4. Les Fonctions en C++ Expliquées avec des Exemples de Code Pratiques
  5. Maîtriser les fonctions en C : Structure, déclaration et bonnes pratiques
  6. Langage C++ : Vue d'ensemble et caractéristiques clés
  7. Constantes et littéraux en C++ : Types, syntaxe et bonnes pratiques
  8. Guide complet des opérateurs C++ : Types, utilisation et bonnes pratiques
  9. Maîtriser les types numériques en C++ : Guide pratique